我有幾個模型需要在其上放置自定義查找條件。例如,如果我有一個聯繫人模型,每次調用Contact.find時,我想限制只屬於正在使用的帳戶返回的聯繫人。在ActiveRecord中重寫「查找」DRY方式
我發現這個通過谷歌(我已經定製了一點):
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 2.1)
感謝吉恩,將工作一種享受,它可能是正道去做吧。帳戶的引入是對現有代碼的新增加,所以我想從這個角度來看,我已經完成了複雜的事情。我只需通過並修改現有的代碼,使其受到帳戶的限制。 – 2008-09-17 06:22:04