Sha256: 64ac9ea47f1a00abc7bc6f4d200812fba7c290edac87aba618e4747cadc7a5c9

Contents?: true

Size: 993 Bytes

Versions: 5

Compression:

Stored size: 993 Bytes

Contents

module CouchbaseOrm
    module Types
        class Array < ActiveModel::Type::Value
            attr_reader :type_class
            attr_reader :model_class

            def initialize(type: nil)
                if type.is_a?(Class) && type < CouchbaseOrm::NestedDocument
                    @model_class = type
                    @type_class = CouchbaseOrm::Types::Nested.new(type: @model_class)
                else
                    @type_class = ActiveModel::Type.registry.lookup(type)
                end
                super()
            end

            def cast(values)
              return [] if values.nil?

              raise ArgumentError, "#{values.inspect} must be an array" unless values.is_a?(::Array)
              
              values.map(&@type_class.method(:cast))
            end
        
            def serialize(values)
                return [] if values.nil?

                values.map(&@type_class.method(:serialize))
            end
        end
    end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
couchbase-orm-2.0.4 lib/couchbase-orm/types/array.rb
couchbase-orm-2.0.3 lib/couchbase-orm/types/array.rb
couchbase-orm-2.0.2 lib/couchbase-orm/types/array.rb
couchbase-orm-2.0.1 lib/couchbase-orm/types/array.rb
couchbase-orm-2.0.0 lib/couchbase-orm/types/array.rb