lib/acfs/resource/attributes/list.rb in acfs-1.0.0.dev.1.b305 vs lib/acfs/resource/attributes/list.rb in acfs-1.0.0
- old
+ new
@@ -1,27 +1,34 @@
module Acfs::Resource::Attributes
-
# @api public
#
# List attribute type. Use it in your model as an attribute type:
#
# @example
# class User < Acfs::Resource
# attribute :name, :list
# end
#
class List < Base
-
# @api public
#
# Cast given object to a list.
#
- # @param [Object] obj Object to cast.
+ # @param [Object] value Object to cast.
# @return [Fixnum] Casted object as list.
# @raise [TypeError] If object cannot be casted to a list.
#
- def cast_type(obj)
- return obj.to_a if obj.respond_to? :to_a
- raise TypeError.new "Cannot cast #{obj.inspect} to array."
+ def cast_value(value)
+ return [] if value.blank?
+
+ if value.is_a?(::Array)
+ value
+ elsif value.respond_to?(:to_ary)
+ value.to_ary
+ elsif value.respond_to?(:to_a)
+ value.to_a
+ else
+ Array(value)
+ end
end
end
end