class SimpleParams::NestedParams
Attributes
id[R]
params[R]
parent[R]
parent_attribute_name[R]
Public Class Methods
array?()
click to toggle source
# File lib/simple_params/nested_params.rb, line 8 def array? type.to_sym == :array end
build(params, parent, name)
click to toggle source
# File lib/simple_params/nested_params.rb, line 32 def build(params, parent, name) if params.is_a?(Array) params.map { |p| build_instance(p, parent) }.compact elsif with_ids? params.each_pair.map { |key, val| build_instance({key => val}, parent) }.compact else build_instance(params, parent) end end
define_new_array_class(parent, name, options, &block)
click to toggle source
# File lib/simple_params/nested_params.rb, line 28 def define_new_array_class(parent, name, options, &block) define_new_class(parent, name, options.merge(type: :array), &block) end
define_new_hash_class(parent, name, options, &block)
click to toggle source
# File lib/simple_params/nested_params.rb, line 24 def define_new_hash_class(parent, name, options, &block) define_new_class(parent, name, options.merge(type: :hash), &block) end
hash?()
click to toggle source
# File lib/simple_params/nested_params.rb, line 12 def hash? type.to_sym == :hash end
new(params={}, parent = nil)
click to toggle source
Should allow NestedParams
to be initialized with no arguments, in order
to be compatible with some Rails form gems like 'nested_form'
Calls superclass method
# File lib/simple_params/nested_params.rb, line 57 def initialize(params={}, parent = nil) @parent = parent @id = extract_id(params) @params = extract_initialization_params(params) super(@params) end
optional?()
click to toggle source
# File lib/simple_params/nested_params.rb, line 20 def optional? !!options[:optional] end
type()
click to toggle source
# File lib/simple_params/nested_params.rb, line 4 def type options[:type] end
with_ids?()
click to toggle source
# File lib/simple_params/nested_params.rb, line 16 def with_ids? !!options[:with_ids] end
Private Class Methods
build_instance(params, parent)
click to toggle source
# File lib/simple_params/nested_params.rb, line 47 def build_instance(params, parent) instance = self.new(params, parent) instance.destroyed? ? nil : instance end
define_new_class(parent, name, options, &block)
click to toggle source
# File lib/simple_params/nested_params.rb, line 43 def define_new_class(parent, name, options, &block) NestedParamsClassBuilder.new(parent).build(self, name, options, &block) end
Public Instance Methods
array?()
click to toggle source
# File lib/simple_params/nested_params.rb, line 64 def array? self.class.array? end
destroyed?()
click to toggle source
# File lib/simple_params/nested_params.rb, line 72 def destroyed? sym_params = symbolize_params(params) [true, 1, "1", "true"].include?(sym_params[:_destroy]) end
symbol()
click to toggle source
# File lib/simple_params/nested_params.rb, line 68 def symbol self.class.name_symbol end
Private Instance Methods
extract_id(params)
click to toggle source
# File lib/simple_params/nested_params.rb, line 86 def extract_id(params) if with_ids? params.keys[0] end end
extract_initialization_params(params)
click to toggle source
# File lib/simple_params/nested_params.rb, line 92 def extract_initialization_params(params) if with_ids? params.values[0] || {} else params || {} end end
symbolize_params(params)
click to toggle source
# File lib/simple_params/nested_params.rb, line 82 def symbolize_params(params) Hash[params.map{ |k, v| [k.to_sym, v] }] end
with_ids?()
click to toggle source
# File lib/simple_params/nested_params.rb, line 78 def with_ids? self.class.with_ids? end