Class: ActiveRecord::Store::FlexibleJsonb

Inherits:
FlexibleStore show all
Defined in:
lib/pgrel/active_record/store/flexible_jsonb.rb

Instance Attribute Summary

Attributes inherited from FlexibleStore

#relation, #store_name

Instance Method Summary collapse

Methods inherited from FlexibleStore

#initialize

Constructor Details

This class inherits a constructor from ActiveRecord::Store::FlexibleStore

Instance Method Details

#delete_keys(*keys) ⇒ Object



6
7
8
9
10
11
# File 'lib/pgrel/active_record/store/flexible_jsonb.rb', line 6

def delete_keys(*keys)
  keys.flatten!
  query = +"#{store_name} = #{store_name}"
  keys.length.times { query.concat(" - ?") }
  relation.update_all([query, *keys])
end

#delete_pairs(pairs) ⇒ Object



17
18
19
20
21
22
# File 'lib/pgrel/active_record/store/flexible_jsonb.rb', line 17

def delete_pairs(pairs)
  keys = pairs.keys
  pairs = pairs.map { |k, v| {k => v} }
  @relation = relation.where.store(store_name, *pairs)
  delete_keys(keys)
end

#merge(pairs) ⇒ Object



13
14
15
# File 'lib/pgrel/active_record/store/flexible_jsonb.rb', line 13

def merge(pairs)
  relation.update_all(["#{store_name} = #{store_name} || ?::jsonb", pairs.to_json])
end