Method: ActiveForm::Model.load

Defined in:
lib/rails/model/loader.rb

.load(*args, &block) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/rails/model/loader.rb', line 35

def self.load(*args, &block)
  custom_type = args.first.kind_of?(Symbol) ? args.shift : nil
  instance = args.shift
  definition_name = "#{instance.class.name.underscore}"
  definitions = case instance
    when ActiveRecord::Base then
      if instance.new_record?
        ["create_#{definition_name}", definition_name]
      else
        ["update_#{definition_name}", definition_name]
      end
    else
      return nil
    end     
  args.unshift("#{definition_name}_form") if args.empty? || args.first.kind_of?(Hash)
  definitions.unshift("#{custom_type}_#{definition_name}") unless custom_type.nil?
  if name = definitions.detect { |name| ActiveForm::get(name) }
    Definition.new.build(name, instance, *args, &block)
  else
    AutoDefinition.new.build(definition_name, instance, *args, &block)
  end
end