Class: MR::Model::FieldSet

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/mr/model/fields.rb

Instance Method Summary collapse

Constructor Details

#initializeFieldSet

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

#namesObject



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