Tengo algunos modelos que necesitan condiciones de búsqueda personalizadas. Por ejemplo, si tengo un modelo de contacto, cada vez que se llama a Contact.find, quiero restringir los contactos devueltos que solo pertenecen a la cuenta en uso.Anulación de "buscar" en ActiveRecord el modo DRY
me encontré por Google (que He personalizado un poco):
def self.find(*args)
with_scope(:find => { :conditions => "account_id = #{$account.id}" }) do
super(*args)
end
end
Esto funciona muy bien, a excepción de unas pocas ocasiones en que account_id es ambiguo por lo que lo adaptaron a:
def self.find(*args)
with_scope(:find => { :conditions => "#{self.to_s.downcase.pluralize}.account_id = #{$account.id}" }) do
super(*args)
end
end
Esto también funciona muy bien, sin embargo, quiero que sea SECO. Ahora tengo algunos modelos diferentes que quiero que se use este tipo de función. ¿Cuál es la mejor manera de hacer esto?
Cuando responda, incluya el código para ayudar a nuestras mentes a captar la metaprogramación Ruby-fu.
(estoy usando Rails 2.1)
Gracias Jean, que funcionará a tratar y es probablemente la manera correcta para hacerlo. La introducción de la cuenta es una nueva adición al código existente, así que supongo que estaba complicando las cosas desde esa perspectiva. Voy a revisar y modificar el código existente para que sea delimitado por la cuenta. –