Module: ActiveForm::Model

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

Defined Under Namespace

Classes: AutoDefinition, Definition

Class Method Summary collapse

Class Method Details

.build(*args, &block) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/rails/model/loader.rb', line 64

def self.build(*args, &block)
  instance = args.shift
  return nil unless instance.kind_of?(ActiveRecord::Base)
  definition_name = "#{instance.class.name.underscore}"
  args.unshift("#{definition_name}_form") if args.empty? || args.first.kind_of?(Hash)
  AutoDefinition.new.build(definition_name, instance, *args, &block)
end

.build!(*args, &block) ⇒ Object



72
73
74
75
76
# File 'lib/rails/model/loader.rb', line 72

def self.build!(*args, &block)
  form = build(*args, &block)
  form.submit_element
  form
end

.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

.load!(*args, &block) ⇒ Object



58
59
60
61
62
# File 'lib/rails/model/loader.rb', line 58

def self.load!(*args, &block)
  form = load(*args, &block)
  form.submit_element
  form
end