¿Cuál es la forma más limpia de anular el hallazgo de ActiveRecord para modelos y colecciones?

Tengo un código de biblioteca que anula el método de búsqueda de Ar. También incluyo el módulo para todas las clases de la Asociación para que tanto MyModel.find como @ parent.my_models.find funcionen y apliquen el alcance correcto.

Basé mi código en will_paginate's:

a = ActiveRecord::Associations
returning([ a::AssociationCollection ]) { |classes|
  # detect http://dev.rubyonrails.org/changeset/9230
  unless a::HasManyThroughAssociation.superclass == a::HasManyAssociation
    classes << a::HasManyThroughAssociation
  end
}.each do |klass|
  klass.send :include, Finder::ClassMethods
  klass.class_eval { alias_method_chain :method_missing, :paginate }
end

Mi problema es que solo quiero anular los buscadores para algunos modelos. Actualmente necesito extender todas las clases de colección de asociación que comparten todos los modelos. Sé que puedo extender asociaciones por modelo pasando un módulo:

has_many :things, :extend => SomeCustomMethods

Pero mi biblioteca es básicamente un complemento ActiveRecord, por lo que me gustaría una convención limpia para las extensiones de buscador conectables que se aplican tanto al modelo como a las colecciones de alcance sin afectar a todos los modelos de la aplicación.

Respuestas a la pregunta(3)

Su respuesta a la pregunta