Class: ActiveRecord::QueryMethods::KeyStoreChain
- Inherits:
-
StoreChain
- Object
- StoreChain
- ActiveRecord::QueryMethods::KeyStoreChain
- Defined in:
- lib/pgrel/active_record/store_chain.rb
Overview
Base class for key-value types of stores (hstore, jsonb)
Direct Known Subclasses
Instance Method Summary collapse
-
#any(*keys) ⇒ Object
Any of the keys existence.
-
#key(key) ⇒ Object
Single key existence.
-
#keys(*keys) ⇒ Object
Several keys existence.
Methods inherited from StoreChain
#contained, #contains, #initialize, #not, #where
Constructor Details
This class inherits a constructor from ActiveRecord::QueryMethods::StoreChain
Instance Method Details
#any(*keys) ⇒ Object
Any of the keys existence
Example
Model.create!(name: 'first', store: {a: 1, b: 2})
Model.create!(name: 'second', store: {b: 1, c: 3})
Model.store(:store).keys('a','b').count #=> 2
181 182 183 184 185 186 |
# File 'lib/pgrel/active_record/store_chain.rb', line 181 def any(*keys) update_scope( "#{@store_name} ?| ARRAY[:keys]", keys: keys.flatten.map(&:to_s) ) end |
#key(key) ⇒ Object
Single key existence
Example
Model.create!(name: 'first', store: {a: 1})
Model.create!(name: 'second', store: {b: 1})
# Get all records which have key 'a' in store 'store'
Model.store(:store).key('a').all #=> [Model(name: 'first', ...)]
156 157 158 |
# File 'lib/pgrel/active_record/store_chain.rb', line 156 def key(key) update_scope "#{@store_name} ? :key", key: key.to_s end |
#keys(*keys) ⇒ Object
Several keys existence
Example
Model.create!(name: 'first', store: {a: 1, b: 2})
Model.create!(name: 'second', store: {b: 1, c: 3})
Model.store(:store).keys('a','b').all #=> [Model(name: 'first', ...)]
167 168 169 170 171 172 |
# File 'lib/pgrel/active_record/store_chain.rb', line 167 def keys(*keys) update_scope( "#{@store_name} ?& ARRAY[:keys]", keys: keys.flatten.map(&:to_s) ) end |