Class: AccessControlledDataContainer

Inherits:
Object
  • Object
show all
Defined in:
lib/access_controlled_data_container.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ AccessControlledDataContainer

Returns a new instance of AccessControlledDataContainer.



4
5
6
7
# File 'lib/access_controlled_data_container.rb', line 4

def initialize(*args)
  @data = DataContainer.new(*args)
  @locked = Hash.new { |hash,attr| hash[attr] = false }
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, *args, &block) ⇒ Object



25
26
27
28
# File 'lib/access_controlled_data_container.rb', line 25

def method_missing(sym, *args, &block)
  raise_error_if_setting_locked_attribute(sym, *args)
  @data.send(sym, *args, &block)
end

Instance Method Details

#lock(*attrs) ⇒ Object



17
18
19
# File 'lib/access_controlled_data_container.rb', line 17

def lock(*attrs)
  attrs.each { |attr| @locked[attr] = true }
end

#nameObject



9
10
11
# File 'lib/access_controlled_data_container.rb', line 9

def name
  'AccessControlledDataContainer'
end

#to_sObject



13
14
15
# File 'lib/access_controlled_data_container.rb', line 13

def to_s
  @data.to_s.gsub!('DataContainer', name)
end

#unlock(*attrs) ⇒ Object



21
22
23
# File 'lib/access_controlled_data_container.rb', line 21

def unlock(*attrs)
  attrs.each { |attr| @locked[attr] = false }
end