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
|