Sha256: 9dc41dedf2a41a922db9c73d2c90681b2449bdbf28df02bcd43a636992e2d4b4
Contents?: true
Size: 1.1 KB
Versions: 11
Compression:
Stored size: 1.1 KB
Contents
module Searchlogic module ActiveRecord # The internals to ActiveRecord like to do scopes.include?(scope_name). And this is how they check for the existence # of scopes, which is terrible. The problem is that searchlogic scopes are dynamically created. So the only solution # is to override the include? method for the scopes hash, try to create the named scope, and then check it again. # This shouldn't effect performance because once its created it never gets called again. I also cache failed names # so we don't try to create them again. module Scope def scopes read_inheritable_attribute(:scopes) || write_inheritable_attribute(:scopes, {}.tap do |h| class << h attr_accessor :active_record_class end h.active_record_class = self h.instance_eval <<-eval def include?(key) result = super return result if result active_record_class.respond_to?(key) super end eval end) end end end end
Version data entries
11 entries across 11 versions & 1 rubygems