Sha256: 87f051d0cae85282cac9ad5884017d61998fb0f3a3eb106dc192fed6d6db8c11

Contents?: true

Size: 609 Bytes

Versions: 4

Compression:

Stored size: 609 Bytes

Contents

require 'active_support/concern'
require 'active_support/core_ext/string/filters'

module ActiveHouse
  module Collectable
    extend ActiveSupport::Concern

    def initialize(*)
      @collection = nil
      super
    end

    def to_a
      collection
    end

    def reset
      @collection = nil
    end

    def loaded?
      !@collection.nil?
    end

    def to_hashes
      connection.select_rows(to_query.squish)
    end

    private

    def collection
      @collection ||= fetch_collection
    end

    def fetch_collection
      to_hashes.map { |row| model_class.load!(row) }
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
active_house-0.3.2 lib/active_house/collectable.rb
active_house-0.3.1 lib/active_house/collectable.rb
active_house-0.3.0 lib/active_house/collectable.rb
active_house-0.2.2 lib/active_house/collectable.rb