class FormObj::ModelMapper::ModelAttribute::Item
Attributes
hash[RW]
hash_item[R]
name[R]
Public Class Methods
new(name:, klass:, hash:, array:)
click to toggle source
# File lib/form_obj/model_mapper/model_attribute/item.rb, line 13 def initialize(name:, klass:, hash:, array:) @array = array @hash = hash @hash_item = name[0] == ':' @name = (name[0] == ':' ? name[1..-1] : name).to_sym @klass = klass || @name.to_s.classify end
Public Instance Methods
create_array()
click to toggle source
# File lib/form_obj/model_mapper/model_attribute/item.rb, line 33 def create_array [] end
create_model()
click to toggle source
# File lib/form_obj/model_mapper/model_attribute/item.rb, line 25 def create_model if @hash {} else (@klass.is_a?(String) ? @klass.constantize : @klass).try(:new) end end
hash_item=(value)
click to toggle source
# File lib/form_obj/model_mapper/model_attribute/item.rb, line 21 def hash_item=(value) @hash_item ||= value end
read_errors_from_model(model)
click to toggle source
# File lib/form_obj/model_mapper/model_attribute/item.rb, line 66 def read_errors_from_model(model) @hash_item ? [] : model.errors[@name] end
read_from_model(model, create_nested_model_if_nil: false)
click to toggle source
# File lib/form_obj/model_mapper/model_attribute/item.rb, line 37 def read_from_model(model, create_nested_model_if_nil: false) return nil if model.nil? result = if @hash_item model[hash_attribute_name(model, @name)] else model.send(@name) end if result.nil? && create_nested_model_if_nil result = @array ? create_array : create_model write_to_model(model, result) end result end
to_hash(value)
click to toggle source
# File lib/form_obj/model_mapper/model_attribute/item.rb, line 62 def to_hash(value) { @name => value } end
write_to_model(model, value)
click to toggle source
# File lib/form_obj/model_mapper/model_attribute/item.rb, line 54 def write_to_model(model, value) if @hash_item model[hash_attribute_name(model, @name)] = value else model.send("#{@name}=", value) end end
Private Instance Methods
hash_attribute_name(model, name)
click to toggle source
# File lib/form_obj/model_mapper/model_attribute/item.rb, line 72 def hash_attribute_name(model, name) model.key?(name.to_s) && !model.key?(name.to_sym) ? name.to_s : name.to_sym end