Class: MR::Model::FieldSet
- Inherits:
-
Object
- Object
- MR::Model::FieldSet
- Includes:
- Enumerable
- Defined in:
- lib/mr/model/fields.rb
Instance Method Summary collapse
- #add_reader(name, model_class) ⇒ Object
- #add_writer(name, model_class) ⇒ Object
- #batch_write(values, record) ⇒ Object
- #each(&block) ⇒ Object
- #find(name) ⇒ Object
- #get(name) ⇒ Object
-
#initialize ⇒ FieldSet
constructor
A new instance of FieldSet.
- #names ⇒ Object
- #read_all(record) ⇒ Object
Constructor Details
#initialize ⇒ FieldSet
Returns a new instance of FieldSet.
66 67 68 |
# File 'lib/mr/model/fields.rb', line 66 def initialize @fields = {} end |
Instance Method Details
#add_reader(name, model_class) ⇒ Object
96 97 98 |
# File 'lib/mr/model/fields.rb', line 96 def add_reader(name, model_class) get(name).define_reader_on(model_class) end |
#add_writer(name, model_class) ⇒ Object
100 101 102 |
# File 'lib/mr/model/fields.rb', line 100 def add_writer(name, model_class) get(name).define_writer_on(model_class) end |
#batch_write(values, record) ⇒ Object
92 93 94 |
# File 'lib/mr/model/fields.rb', line 92 def batch_write(values, record) values.each{ |name, value| find(name).write(value, record) } end |
#each(&block) ⇒ Object
82 83 84 |
# File 'lib/mr/model/fields.rb', line 82 def each(&block) @fields.values.each(&block) end |
#find(name) ⇒ Object
74 75 76 |
# File 'lib/mr/model/fields.rb', line 74 def find(name) @fields[name.to_s] || raise(NoFieldError, "the '#{name}' field doesn't exist") end |
#get(name) ⇒ Object
78 79 80 |
# File 'lib/mr/model/fields.rb', line 78 def get(name) @fields[name.to_s] ||= Field.new(name) end |
#names ⇒ Object
70 71 72 |
# File 'lib/mr/model/fields.rb', line 70 def names @fields.keys end |
#read_all(record) ⇒ Object
86 87 88 89 90 |
# File 'lib/mr/model/fields.rb', line 86 def read_all(record) @fields.values.inject({}) do |h, field| h.merge(field.name => field.read(record)) end end |