Class: ActiveRecord::QueryMethods::HstoreChain
- Inherits:
-
KeyStoreChain
- Object
- StoreChain
- KeyStoreChain
- ActiveRecord::QueryMethods::HstoreChain
- Defined in:
- lib/pgrel/active_record/store_chain/hstore_chain.rb
Overview
Store chain for hstore columns.
Instance Method Summary collapse
-
#value(*values) ⇒ Object
Value existence.
-
#values(*values) ⇒ Object
Values existence.
Methods inherited from KeyStoreChain
Methods inherited from StoreChain
#contained, #contains, #initialize, #not, #where
Constructor Details
This class inherits a constructor from ActiveRecord::QueryMethods::StoreChain
Instance Method Details
#value(*values) ⇒ Object
Value existence
Example
Model.create!(name: 'first', store: {a: 1, b: 2})
Model.create!(name: 'second', store: {b: 1, c: 3})
Model.store(:store).value(1, 2).all
#=>[Model(name: 'first', ...), Model(name: 'second')]
15 16 17 18 19 20 21 22 |
# File 'lib/pgrel/active_record/store_chain/hstore_chain.rb', line 15 def value(*values) query = String.new values.length.times do |n| query.concat("avals(#{@store_name}) @> ARRAY[?]") query.concat(' OR ') if n < values.length - 1 end update_scope(query, *values.map(&:to_s)) end |
#values(*values) ⇒ Object
Values existence
Example
Model.create!(name: 'first', store: {a: 1, b: 2})
Model.create!(name: 'second', store: {b: 1, c: 3})
Model.store(:store).values(1, 2).all #=> [Model(name: 'first', ...)]
31 32 33 |
# File 'lib/pgrel/active_record/store_chain/hstore_chain.rb', line 31 def values(*values) update_scope("avals(#{@store_name}) @> ARRAY[?]", values.map(&:to_s)) end |