Module: Norman::Model::ClassMethods
- Extended by:
- Forwardable
- Defined in:
- lib/norman/model.rb
Instance Attribute Summary collapse
-
#attribute_names ⇒ Object
Returns the value of attribute attribute_names.
-
#id_method ⇒ Object
Returns the value of attribute id_method.
-
#key_class ⇒ Object
readonly
Returns the value of attribute key_class.
-
#mapper ⇒ Object
Returns the value of attribute mapper.
Instance Method Summary collapse
- #create(hash) ⇒ Object
- #field(*names) ⇒ Object
- #filters(&block) ⇒ Object
- #use(adapter_name, options = {}) ⇒ Object
-
#with_index(name = nil, &block) ⇒ Object
Memoize the output of the method call invoked in the block.
Instance Attribute Details
#attribute_names ⇒ Object
Returns the value of attribute attribute_names.
17 18 19 |
# File 'lib/norman/model.rb', line 17 def attribute_names @attribute_names end |
#id_method ⇒ Object
Returns the value of attribute id_method.
17 18 19 |
# File 'lib/norman/model.rb', line 17 def id_method @id_method end |
#key_class ⇒ Object (readonly)
Returns the value of attribute key_class.
18 19 20 |
# File 'lib/norman/model.rb', line 18 def key_class @key_class end |
#mapper ⇒ Object
Returns the value of attribute mapper.
17 18 19 |
# File 'lib/norman/model.rb', line 17 def mapper @mapper end |
Instance Method Details
#create(hash) ⇒ Object
56 57 58 |
# File 'lib/norman/model.rb', line 56 def create(hash) new(hash).save end |
#field(*names) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/norman/model.rb', line 23 def field(*names) names.each do |name| # First attribute added is the default id id_field name if attribute_names.empty? attribute_names << name.to_sym class_eval(<<-EOM, __FILE__, __LINE__ + 1) def #{name} @#{name} or (@attributes[:#{name}] if @attributes) end def #{name}=(value) @#{name} = value end EOM end end |
#filters(&block) ⇒ Object
74 75 76 77 78 79 80 81 82 83 |
# File 'lib/norman/model.rb', line 74 def filters(&block) key_class.class_eval(&block) key_class.instance_methods(false).each do |name| instance_eval(<<-EOM, __FILE__, __LINE__ + 1) def #{name}(*args) mapper.key_set.#{name}(*args) end EOM end end |
#use(adapter_name, options = {}) ⇒ Object
40 41 42 43 44 |
# File 'lib/norman/model.rb', line 40 def use(adapter_name, = {}) @mapper = nil @adapter_name = adapter_name @mapper_options = end |
#with_index(name = nil, &block) ⇒ Object
Memoize the output of the method call invoked in the block.
48 49 50 51 52 53 54 |
# File 'lib/norman/model.rb', line 48 def with_index(name = nil, &block) name ||= caller(1)[0].match(/in `(.*)'\z/)[1] mapper.indexes[name.to_s] or begin indexable = yield mapper.add_index(name, indexable) end end |