Module: FreeForm::Property::ClassMethods

Includes:
Forwardable
Defined in:
lib/freeform/form/property.rb

Instance Method Summary collapse

Instance Method Details

#allow_destroy_on_saveObject



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/freeform/form/property.rb', line 52

def allow_destroy_on_save
  # Define _destroy method for marked-for-destruction handling
  attr_accessor :_destroy
  define_method(:_destroy=) do |value|
    false_values = [nil, 0 , false, "0", "false"]
    @_destroy = !(false_values.include?(value))
  end
  alias_method :marked_for_destruction?, :_destroy
  define_method(:mark_for_destruction) do
    @_destroy = true
  end
end

#child_model(name, opts = {}, &block) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/freeform/form/property.rb', line 34

def child_model(name, opts={}, &block)
  @models ||= []
  @models << name        
  @child_models ||= []
  @child_models << name        
  attr_accessor name
  define_method("initialize_#{name}") do
    instance_variable_set("@#{name}", instance_eval(&block))
  end
end

#child_modelsObject



16
17
18
# File 'lib/freeform/form/property.rb', line 16

def child_models
  @child_models ||= []
end

#declared_model(name, opts = {}) ⇒ Object Also known as: form_model



20
21
22
23
24
# File 'lib/freeform/form/property.rb', line 20

def declared_model(name, opts={})
  @models ||= []
  @models << name        
  attr_accessor name
end

#declared_models(*names) ⇒ Object Also known as: form_models



27
28
29
30
31
# File 'lib/freeform/form/property.rb', line 27

def declared_models(*names)
  names.each do |name|
    declared_model(name)
  end
end

#modelsObject

Models




12
13
14
# File 'lib/freeform/form/property.rb', line 12

def models
  @models ||= []
end

#property(attribute, options = {}) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/freeform/form/property.rb', line 65

def property(attribute, options={})
  @property_mappings ||= Hash.new
  model = options[:on] ? options [:on] : :self
  field = options[:as] ? options[:as] : attribute.to_sym
  ignore_blank = options[:ignore_blank] ? options[:ignore_blank] : false
  @property_mappings.merge!({field => {:model => model, :field => attribute.to_sym, :ignore_blank => ignore_blank}})

  if model == :self
    attr_accessor attribute
  else
    define_method("#{field}") do
      send("#{model}").send("#{attribute}")
    end

    define_method("#{field}=") do |value|
      send("#{model}").send("#{attribute}=", value)
    end
  end
end

#property_mappingsObject

Properties




47
48
49
50
# File 'lib/freeform/form/property.rb', line 47

def property_mappings
  # Take the form of {:property => {:model => model, :field => field, :ignore_blank => false}}
  @property_mappings ||= Hash.new
end