Class: StoreModel::Types::ManyBase
- Defined in:
- lib/store_model/types/many_base.rb
Overview
Implements type for handling an array of StoreModel::Model
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#cast_value(value) ⇒ Object
Casts
valuefrom DB or user to StoreModel::Model instance. -
#changed_in_place?(raw_old_value, new_value) ⇒ Boolean
Determines whether the mutable value has been modified since it was read.
-
#serialize(value) ⇒ String
Casts a value from the ruby type to a type that the database knows how to understand.
Methods inherited from Base
Instance Method Details
#cast_value(value) ⇒ Object
Casts value from DB or user to StoreModel::Model instance
14 15 16 17 18 19 20 21 22 |
# File 'lib/store_model/types/many_base.rb', line 14 def cast_value(value) case value when String then decode_and_initialize(value) when Array then ensure_model_class(value) when nil then value else raise_cast_error(value) end end |
#changed_in_place?(raw_old_value, new_value) ⇒ Boolean
Determines whether the mutable value has been modified since it was read
49 50 51 |
# File 'lib/store_model/types/many_base.rb', line 49 def changed_in_place?(raw_old_value, new_value) cast_value(raw_old_value) != new_value end |
#serialize(value) ⇒ String
Casts a value from the ruby type to a type that the database knows how to understand.
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/store_model/types/many_base.rb', line 30 def serialize(value) case value when Array return ActiveSupport::JSON.encode(value) if value.empty? || value.any? { |v| !v.is_a?(StoreModel::Model) } ActiveSupport::JSON.encode(value, serialize_unknown_attributes: value.first.serialize_unknown_attributes?, serialize_enums_using_as_json: value.first.serialize_enums_using_as_json?) else super end end |