Sha256: 304743886bc6484dab634e18629e412420b5767e3b1d83f4528f739ec0f5ee09

Contents?: true

Size: 1.09 KB

Versions: 10

Compression:

Stored size: 1.09 KB

Contents

module ROM
  class Relation
    # Interface for objects that can be materialized into a loaded relation
    #
    # @api public
    module Materializable
      # Coerce the relation to an array
      #
      # @return [Array]
      #
      # @api public
      def to_a
        call.to_a
      end
      alias_method :to_ary, :to_a

      # Yield relation tuples
      #
      # @yield [Hash,Object]
      #
      # @api public
      def each
        return to_enum unless block_given?
        to_a.each { |tuple| yield(tuple) }
      end

      # Delegate to loaded relation and return one object
      #
      # @return [Object]
      #
      # @see Loaded#one
      #
      # @api public
      def one
        call.one
      end

      # Delegate to loaded relation and return one object
      #
      # @return [Object]
      #
      # @see Loaded#one
      #
      # @api public
      def one!
        call.one!
      end

      # Return first tuple from a relation coerced to an array
      #
      # @return [Object]
      #
      # @api public
      def first
        to_a.first
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
rom-core-4.2.1 lib/rom/relation/materializable.rb
rom-core-4.2.0 lib/rom/relation/materializable.rb
rom-core-4.1.2 lib/rom/relation/materializable.rb
rom-core-4.1.1 lib/rom/relation/materializable.rb
rom-core-4.1.0 lib/rom/relation/materializable.rb
rom-core-4.0.2 lib/rom/relation/materializable.rb
rom-core-4.0.1 lib/rom/relation/materializable.rb
rom-core-4.0.0 lib/rom/relation/materializable.rb
rom-core-4.0.0.rc2 lib/rom/relation/materializable.rb
rom-core-4.0.0.rc1 lib/rom/relation/materializable.rb