Module: Sequent::Core::Helpers::ParamSupport::ClassMethods

Defined in:
lib/sequent/core/helpers/param_support.rb

Instance Method Summary collapse

Instance Method Details

#from_params(params = {}) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sequent/core/helpers/param_support.rb', line 14

def from_params(params = {})
  result = allocate
  params = HashWithIndifferentAccess.new(params)
  result.attributes.each do |attribute, type|
    value = params[attribute]

    next if value.blank?
    if type.respond_to? :from_params
      value = type.from_params(value)
    elsif type.is_a? Sequent::Core::Helpers::ArrayWithType
      value = value.map { |v| type.item_type.from_params(v) }
    end
    result.instance_variable_set(:"@#{attribute}", value)
  end
  result
end