Module: Formup

Extended by:
ActiveSupport::Concern
Defined in:
lib/formup.rb,
lib/formup/source.rb,
lib/formup/version.rb,
lib/formup/attr_def.rb

Defined Under Namespace

Modules: ClassMethods Classes: AttrDef, Source

Constant Summary collapse

TRUE_VALUES =
[1, true, "1", "true", "t"]
VERSION =
"1.0.0"

Instance Method Summary collapse

Instance Method Details

#handle_extra_params(parameters) ⇒ Object



79
80
# File 'lib/formup.rb', line 79

def handle_extra_params(parameters)
end

#initialize(params = {}) ⇒ Object

Instance methods {{{



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/formup.rb', line 67

def initialize(params = {})
  return unless params

  parameters = params.dup.with_indifferent_access
  self.class.sources.each do |_, src|
    src.attribute_defs.each do |attr_def|
      __send__(attr_def.attr.to_s + "=", parameters.delete(attr_def.attr)) if parameters.key?(attr_def.attr)
    end
  end
  handle_extra_params(parameters) unless parameters.empty?
end

#load(params = {}) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
# File 'lib/formup.rb', line 104

def load(params = {})
  params.each do |k, v|
    if self.class.sources.key?(k)
      source = self.class.sources[k]
      source.attribute_defs.each do |attr_def|
        value = extract_value(v, attr_def.base)
        __send__(attr_def.attr + "=", value) if value
      end
    end
  end
end

#params_for(key, *excludes_attrs) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/formup.rb', line 86

def params_for(key,*excludes_attrs)
  if excludes_attrs && excludes_attrs.first == false
     excludes = []
  else
    excludes = [excludes_attrs].flatten.compact
    excludes << :id if excludes.empty?
  end

  parameters = {}.with_indifferent_access
  return parameters unless self.class.sources.key?(key)

  source = self.class.sources[key]
  source.attribute_defs.inject(parameters) do |result, attr_def|
    result[attr_def.base] = __send__(attr_def.attr) if excludes.all? { |attr| attr.to_s != attr_def.base }
    result
  end
end

#persisted?Boolean



82
83
84
# File 'lib/formup.rb', line 82

def persisted?
  false
end