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