Sha256: 66b729378037a214ef77c5d52133b9240a01dc4485aa3cc416e9a38d2186b6e0

Contents?: true

Size: 985 Bytes

Versions: 2

Compression:

Stored size: 985 Bytes

Contents

# frozen_string_literal: true

module ActiveRecord
  module QueryMethods
    # Store chain for hstore columns.
    class HstoreChain < KeyStoreChain
      # Overlap values
      #
      # Example
      #   Model.create!(name: 'first', store: {a: 1, b: 2})
      #   Model.create!(name: 'second', store: {b: 1, c: 3})
      #
      #   Model.store(:store).overlap_values(1, 2).all
      #   #=>[Model(name: 'first', ...), Model(name: 'second')]
      def overlap_values(*values)
        update_scope("avals(#{quoted_store_name}) && ARRAY[?]", values.map(&:to_s))
      end

      # Contains values
      #
      # Example
      #   Model.create!(name: 'first', store: {a: 1, b: 2})
      #   Model.create!(name: 'second', store: {b: 1, c: 3})
      #
      #   Model.store(:store).contains_values(1, 2).all #=> [Model(name: 'first', ...)]
      def contains_values(*values)
        update_scope("avals(#{quoted_store_name}) @> ARRAY[?]", values.map(&:to_s))
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pgrel-0.3.1 lib/pgrel/active_record/store_chain/hstore_chain.rb
pgrel-0.3.0 lib/pgrel/active_record/store_chain/hstore_chain.rb