class MR::Model::FieldSet
Public Class Methods
new()
click to toggle source
# File lib/mr/model/fields.rb, line 66 def initialize @fields = {} end
Public Instance Methods
add_reader(name, model_class)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/mr/model/fields.rb, line 82 def each(&block) @fields.values.each(&block) end
find(name)
click to toggle source
# 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)
click to toggle source
# File lib/mr/model/fields.rb, line 78 def get(name) @fields[name.to_s] ||= Field.new(name) end
names()
click to toggle source
# File lib/mr/model/fields.rb, line 70 def names @fields.keys end
read_all(record)
click to toggle source
# 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
Private Instance Methods
stringify_hash(hash)
click to toggle source
# File lib/mr/model/fields.rb, line 106 def stringify_hash(hash) hash.inject({}){ |h, (k, v)| h.merge(k.to_s => v) } end