Module: HashControl::Model::ClassMethods
- Defined in:
- lib/hash_control/model.rb,
lib/hash_control/model.rb
Overview
JSON support
Instance Attribute Summary collapse
-
#permitted_keys ⇒ Object
readonly
Returns the value of attribute permitted_keys.
-
#required_keys ⇒ Object
readonly
Returns the value of attribute required_keys.
Instance Method Summary collapse
- #initialize_class ⇒ Object
- #json_create(hash_as_json) ⇒ Object
- #key_accessor(name) ⇒ Object
- #permit_all_keys ⇒ Object
- #permit_key(*keys) ⇒ Object
- #require_key(*keys) ⇒ Object
Instance Attribute Details
#permitted_keys ⇒ Object (readonly)
Returns the value of attribute permitted_keys.
43 44 45 |
# File 'lib/hash_control/model.rb', line 43 def permitted_keys @permitted_keys end |
#required_keys ⇒ Object (readonly)
Returns the value of attribute required_keys.
43 44 45 |
# File 'lib/hash_control/model.rb', line 43 def required_keys @required_keys end |
Instance Method Details
#initialize_class ⇒ Object
39 40 41 42 |
# File 'lib/hash_control/model.rb', line 39 def initialize_class instance_variable_set(:@required_keys, Set.new) instance_variable_set(:@permitted_keys, Set.new) end |
#json_create(hash_as_json) ⇒ Object
104 105 106 107 108 |
# File 'lib/hash_control/model.rb', line 104 def json_create(hash_as_json) require 'json' hash = JSON.parse hash_as_json new hash end |
#key_accessor(name) ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/hash_control/model.rb', line 59 def key_accessor(name) name = name.to_sym return if self.respond_to?(name) class_eval do define_method(name) { @hash[name] } end end |
#permit_all_keys ⇒ Object
45 46 47 |
# File 'lib/hash_control/model.rb', line 45 def permit_all_keys @permitted_keys = :all end |
#permit_key(*keys) ⇒ Object
54 55 56 57 |
# File 'lib/hash_control/model.rb', line 54 def permit_key(*keys) keys.each { |key| key_accessor(key) } permitted_keys.merge keys end |
#require_key(*keys) ⇒ Object
49 50 51 52 |
# File 'lib/hash_control/model.rb', line 49 def require_key(*keys) keys.each { |key| key_accessor(key) } required_keys.merge keys end |