Module: FreeForm::Property::ClassMethods
- Includes:
- Forwardable
- Defined in:
- lib/freeform/form/property.rb
Instance Method Summary collapse
- #allow_destroy_on_save ⇒ Object
- #child_model(name, opts = {}, &block) ⇒ Object
- #child_models ⇒ Object
- #declared_model(name, opts = {}) ⇒ Object (also: #form_model)
- #declared_models(*names) ⇒ Object (also: #form_models)
-
#models ⇒ Object
Models ————————————————————————.
- #property(attribute, options = {}) ⇒ Object
-
#property_mappings ⇒ Object
Properties ————————————————————————.
Instance Method Details
#allow_destroy_on_save ⇒ Object
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_models ⇒ Object
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 |
#models ⇒ Object
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, ={}) @property_mappings ||= Hash.new model = [:on] ? [:on] : :self field = [:as] ? [:as] : attribute.to_sym ignore_blank = [:ignore_blank] ? [: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_mappings ⇒ Object
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 |