module Doppel::ActiveRecord::Base::ClassMethods
Public Instance Methods
inherited(subclass)
click to toggle source
Calls superclass method
# File lib/doppel/active_record/base.rb, line 11 def inherited(subclass) super return unless subclass.respond_to?(:scope) subclass.class_eval do scope :find_similar, -> (column, sensitivity: 2.0, count: 0, debug: false) do at1 = arel_table at2 = at1.alias lev = Arel::Nodes::NamedFunction.new("levenshtein", [at1[column.to_sym], at2[column.to_sym]]) selects = [at1[Arel.star]] selects << lev.clone.as('lev') if debug select(selects). where(at1[primary_key].not_eq(at2[primary_key])). where(lev.lteq(sensitivity)). from([at1, at2]). group(at1[primary_key], at1[column.to_sym], at2[column.to_sym]). having(at1[primary_key].count.gt(count)).distinct(at1[Arel.star]) end scope :find_exact, -> (column, count: 0) do find_similar(column, sensitivity: 0, count: count) end end end