Method: Ditz::ModelObject.create

Defined in:
lib/ditz/model.rb

.create(vals = {}, generator_args = []) ⇒ Object

creates the object, filling in fields from ‘vals’, and throwing a ModelError when it can’t find all the requisite fields



272
273
274
275
276
277
278
279
280
281
282
283
284
285
# File 'lib/ditz/model.rb', line 272

def create vals={}, generator_args=[]
  o = self.new
  @fields.each do |fname, fopts|
    val = if(x = vals[fname] || vals[fname.to_s])
      x
    elsif(found, x = generate_field_value(o, fopts, generator_args, :interactive => false)) && found
      x
    elsif !fopts[:nil_ok]
      raise ModelError, "missing required field #{fname.inspect} on #{self.name} object (got #{vals.keys.inspect})"
    end
    o.send "#{fname}=", val if val
  end
  o
end