有没有办法在关联中使用两个值来限制数据集而不是仅限一个?如何在has_many关联的作用域中使用模型值
我有一个has_many
关联模型Nyaw
在模型Foo
,它应该使用两个值而不是一个映射。
我尝试下面的代码,但它似乎无法undefined method 'another_id' for #<Nyaw::ActiveRecord_Relation:0x00000003ee6f80> (NoMethodError)
错误:
class Foo < ActiveRecord::Base
has_many :nyaws, -> { where "another_id = ?", self.another_id }
end
会从Foo
模型的行,这对于我叫关联的值。例如,foo.nyaws
其中foo
是单行。
在SQL方面,这是类似于SELECT * FROM foos LEFT JOIN nyaws ON foos.nyaw_id = nyaws.id AND foos.random_id = nyaws.something_else
。所以我基本上希望能够在AND
后面添加那个部分,以便在有人呼叫关联时完成每个查询。
似乎有一些建议,但所有官方信息只提到硬编码值,但没有关于使用定义关联的模型中的值。
最近我找到了类似scope :with_company_id, lambda {|id| joins(:server).where('server.company_id = ?', id) }
的东西,但是这只适用于像类普通方法那样使用的范围。
你能指望什么'self.another_id'返回?你是否意识到,在这种情况下,“自我”就是阶级? –
@AndreyDeineko:应该是来自'Foo'模型的值。我知道这是行不通的,我把它作为我尝试过的一个例子,并用伪代码来说明我想实现的目标。 – Smar
Foo模型的价值是模糊的。是类属性还是模型的表列? –