lib/blind_index/extensions.rb in blind_index-0.1.1 vs lib/blind_index/extensions.rb in blind_index-0.2.0

- old
+ new

@@ -1,7 +1,8 @@ module BlindIndex module Extensions + # ActiveRecord 5.0+ module TableMetadata def resolve_column_aliases(hash) new_hash = super if has_blind_indexes? hash.each do |key, _| @@ -17,9 +18,34 @@ def has_blind_indexes? unless defined?(@has_blind_indexes) @has_blind_indexes = klass.respond_to?(:blind_indexes) end @has_blind_indexes + end + end + + # ActiveRecord 4.2 + module PredicateBuilder + def resolve_column_aliases(klass, hash) + new_hash = super + if has_blind_indexes?(klass) + hash.each do |key, _| + if (bi = klass.blind_indexes[key]) + new_hash[bi[:bidx_attribute]] = BlindIndex.generate_bidx(new_hash.delete(key), bi) + end + end + end + new_hash + end + + @@blind_index_cache = {} + + # memoize for performance + def has_blind_indexes?(klass) + if @@blind_index_cache[klass].nil? + @@blind_index_cache[klass] = klass.respond_to?(:blind_indexes) + end + @@blind_index_cache[klass] end end module UniquenessValidator if ActiveRecord::VERSION::STRING >= "5.2"