我试图找出是否有办法重用AR调用中的范围。这是我的例子
@current_account.items.report_by_month(month, year)
在report_my_month范围内,我想重用@current_account
def self.report_by_month(month, year)
values = Values.where(:current_account => USE SCOPE FROM SELF)
scope = scoped{}
scope = scope.where(:values => values)
end
这只是一个示例代码,用于确定如何执行此操作,因为查询要复杂得多,因为它是一个报表。谢谢!
答案 0 :(得分:4)
是否有理由不能简单地将其作为附加参数传递?
def self.report_by_month(month, year, current_account)
values = Values.where(:current_account => current_account)
scope = scoped{}
scope = scope.where(:values => values)
end
用
调用@current_account.items.report_by_month(month, year, @current_account)
编辑:
如果您只是想避免再次传递@current_account,我建议您在Account类中添加一个实例方法。
class Account
has_many :items
def items_reported_by_month(month, year)
self.items.report_by_month(month, year, id)
end
end
然后您可以使用
进行调用@current_account.items_reported_by_month(month, year)