我有几个模型需要在其上放置自定义查找条件。例如,如果我有一个联系人模型,每次调用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