Rails 3 - 访问范围链以重用

时间:2012-03-22 01:21:37

标签: ruby-on-rails activerecord scope

我试图找出是否有办法重用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

这只是一个示例代码,用于确定如何执行此操作,因为查询要复杂得多,因为它是一个报表。谢谢!

1 个答案:

答案 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)