Rails named_scope herencia?
Estoy tratando de generalizar algunos de mis modelos al proporcionar un modelo base común para heredar que contiene algunas declaraciones mutuas named_scope y un método de filtro que activa esa búsqueda de consultas más simples en el lado del controlador. Esto parece estar funcionando cuando lo ejecuto en la consola, pero falla cuando en el controlador:
# in the base model
class GenericModel < ActiveRecord::Base
named_scope :by_name, lambda { |name|
( name.blank? ) ? {} : { :conditions => [ "#{self.table_name}.name like ?", "%#{name}%" ] }
}
def filter(params)
res = []
res = self.by_name( (params[:name] or '') ) if params[:name]
return res
end
end
class MyModel < GenericModel
set_table_name 'my_models'
end
# works in in console!
>> params = { :name => 'jimmy' }
>> MyModel.filter(params)
=> [ <#MyModel ...>, ... ]
nil
# fails in controller
@model = MyModel.filter(params)
# ActiveRecord::StatementInvalid (Mysql::Error Unknown column 'generic_models.name' in where clause...)
Aparentemente se llama a la clase padre 'named_scope cuando está en rails, pero funciona bien en la consola de rails. ¿Alguna idea de cómo reparar esto? Gracias