class StoreModel::Types::Many
Implements ActiveModel::Type::Value type for handling an array of StoreModel::Model
Public Class Methods
new(model_klass)
click to toggle source
Initializes type for model class
@param model_klass [StoreModel::Model] model class to handle
@return [StoreModel::Types::Many]
# File lib/store_model/types/many.rb, line 15 def initialize(model_klass) @model_klass = model_klass end
Public Instance Methods
type()
click to toggle source
Returns type
@return [Symbol]
# File lib/store_model/types/many.rb, line 22 def type :array end
Protected Instance Methods
cast_model_type_value(value)
click to toggle source
# File lib/store_model/types/many.rb, line 34 def cast_model_type_value(value) model_klass_type.cast_value(value) end
ensure_model_class(array)
click to toggle source
# File lib/store_model/types/many.rb, line 28 def ensure_model_class(array) array.map do |object| object.is_a?(@model_klass) ? object : cast_model_type_value(object) end end
model_klass_type()
click to toggle source
# File lib/store_model/types/many.rb, line 38 def model_klass_type @model_klass_type ||= @model_klass.to_type end
raise_cast_error(value)
click to toggle source
# File lib/store_model/types/many.rb, line 42 def raise_cast_error(value) raise StoreModel::Types::CastError, "failed casting #{value.inspect}, only String or Array instances are allowed" end