有沒有辦法在關聯中使用兩個值來限制數據集而不是僅限一個?如何在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模型的價值是模糊的。是類屬性還是模型的表列? –