Class: ActiveForm::Model::AutoDefinition

Inherits:
Definition show all
Defined in:
lib/rails/model/loader.rb

Instance Method Summary collapse

Methods inherited from Definition

#assign_validation, #association_column_to_element, #associations_lookup, belongs_to_column, boolean_column, #column_to_element, date_column, datetime_column, #initialize, integer_column, #prepare_new_record, #prepare_record, primary_key_column, string_column, text_column

Constructor Details

This class inherits a constructor from ActiveForm::Model::Definition

Instance Method Details

#build(name, instance, *args, &block) ⇒ Object



183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# File 'lib/rails/model/loader.rb', line 183

def build(name, instance, *args, &block)     
  assoc_lookup = associations_lookup(instance)
  assoc_lookup_keys = assoc_lookup.keys
  
  form = ActiveForm::compose(*args)  
  instance.class.columns.each do |column|
    if column.primary
      form << self.class.primary_key_column(column)
    elsif column.name =~ /(_id)$/ && assoc_lookup_keys.include?(column.name)
      form << association_column_to_element(assoc_lookup[column.name], column)
    else
      form << column_to_element(column)
    end
  end      
  form.instance_eval(&block) if block_given?
  form = instance.new_record? ? prepare_new_record(form, instance) : prepare_record(form, instance)
  assign_validation(form, instance)
  form
end