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