Ruby on rails Rails作用域有多个到多个作用域

Ruby on rails Rails作用域有多个到多个作用域,ruby-on-rails,activerecord,ruby-on-rails-5,has-many-through,has-many,Ruby On Rails,Activerecord,Ruby On Rails 5,Has Many Through,Has Many,我有一个模型,它的作用域有很多。我想在这一点上加上一条: X类

我有一个模型,它的作用域有很多。我想在这一点上加上一条:


X类<应用程序记录
有很多:ys,{foreign\u key::y\u id}do
_z(z)的定义
其中(“boolean_flag={z.boolean_flag}”)
结束
有很多:bs,通过::ys#但我只想得到ys的bs
结束
A
y
这里属于A
b

所以最后我想打电话给:

something.xs.ys.for(z.bs)

现在我还可以

something.xs.ys.for(z.map{| y | y.b}


但是我想正确地连接关联

您需要实际定义第二个关联:

class Project < ApplicationRecord
  has_many :issues
  has_many :open_issues,
    -> { where(status: 'open') },
    class_name: 'Issue'
    
  has_many :assignees, through: :open_issues
end
这实际上只是将一组过滤器直接应用于关联本身

something.xs.ys.for(z).bs

实际上与Rails中关联的实际工作方式不兼容。关联不能在关系或关联代理对象上调用-只能在记录本身上调用。

哇,我太棒了!尽管文档中有多个实例表明我可以,但我不知道如何将参数传递给作用域关联,在本例中,我的for_z作用域需要传递参数。因此,我只能使用接受一个参数的
def for_z
策略。您是否认为我应该能够将arg传递给我的作用域关联?不,您不能将参数传递给lambda,因为当您使用include、join和eager_load时,lambda无法传递该参数。
something.xs.ys.for(z).bs