У меня есть несколько моделей, для которых необходимо настроить условия поиска. Например, если у меня есть модель контакта, каждый раз, когда вызывается Contact.find, я хочу ограничить возвращенные контакты, принадлежащие только используемой учетной записи.
Я нашел это через Google (который я немного настроил):
def self.find(*args)
with_scope(:find => { :conditions => "account_id = #{$account.id}" }) do
super(*args)
end
end
Это прекрасно работает, за исключением нескольких случаев, когда account_id является неоднозначным, поэтому я адаптировал его к:
def self.find(*args)
with_scope(:find => { :conditions => "#{self.to_s.downcase.pluralize}.account_id = #{$account.id}" }) do
super(*args)
end
end
Это также прекрасно работает, однако я хочу, чтобы это было СУХОЙ. Теперь у меня есть несколько разных моделей, которые я хочу использовать для этой функции. Каков наилучший способ сделать это?
Когда вы отвечаете, пожалуйста, включите код, который поможет нашему уму понять метапрограммирование Ruby-fu.
(я использую Rails v2.1)