在has_many上:通过关联,用lambda替换条件

时间:2013-11-27 06:52:23

标签: ruby-on-rails ruby associations

我有这个协会:

has_many :foo_participators, through: :foos, source: :user, conditions: "foos.state = 'completed'"

Rails告诉我:

  

弃权警告:Bar.has_many中的以下选项   :foo_participators声明已弃用:: condition。请使用范围   而是阻止。例如,以下内容:

has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment'
     

应改写如下:

has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'

这与我的关联有可能吗?

1 个答案:

答案 0 :(得分:6)

在我提出问题后立即想出来。出于某种原因,我没有尝试过将lambda放在第一位 - 这样做非常有效。

has_many :foo_participators, ->{where "foos.state = 'completed'"}, through: :foos, source: :user