class Upsert::Row
@private
Constants
- OrderedHash
Attributes
hstore_delete_keys[R]
selector[R]
setter[R]
Public Class Methods
new(raw_selector, raw_setter, options)
click to toggle source
# File lib/upsert/row.rb, line 19 def initialize(raw_selector, raw_setter, options) eager_nullify = (options.nil? || options.fetch(:eager_nullify, true)) @selector = raw_selector.inject({}) do |memo, (k, v)| memo[k.to_s] = v memo end @hstore_delete_keys = {} @setter = raw_setter.inject({}) do |memo, (k, v)| k = k.to_s if v.is_a?(::Hash) and eager_nullify v.each do |kk, vv| if vv.nil? (@hstore_delete_keys[k] ||= []) << kk end end end memo[k] = v memo end (selector.keys - setter.keys).each do |missing| setter[missing] = selector[missing] end # there is probably a more clever way to incrementally sort these hashes @selector = sort_hash selector @setter = sort_hash setter end
Private Instance Methods
sort_hash(original)
click to toggle source
# File lib/upsert/row.rb, line 52 def sort_hash(original) original.keys.sort.inject(OrderedHash.new) do |memo, k| memo[k] = original[k] memo end end