Rails named_scope herança?
Estou tentando generalizar alguns dos meus modelos, fornecendo um modelo de base comum para herdar, que contém algumas declarações nomeadas_scope mútuas e um método de filtro que ativa a busca por consultas mais simples no lado do controlador. Isso parece estar funcionando quando eu o executo no console, mas falha quando no 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, a classe pai 'named_scope está sendo chamada no Rails, mas funciona bem no console do Rails. Alguma idéia de como consertar isso? obrigado