我有一种关系,我试图引用两个不同的外键。请原谅这里的蹩脚例子,但我想做类似以下的事情:
class Account
has_many :orders,
-> { where('orders.account_id IS NULL OR orders.account_id = ?', self.id ) },
primary_key: :user_id, foreign_key: :user_id
end
然而,where子句中的动态值不正确,抛出了一个' NoMethodError:undefined方法`id'对于ActiveRecord_Relation'。
有关如何在where子句中引用父记录的任何想法吗?
答案 0 :(得分:0)
您没有要拨打.id
的记录。我想这就是你要找的东西:
class Account
has_many :orders,
-> { where('orders.account_id IS NULL OR orders.account_id = accounts.id') },
primary_key: :user_id, foreign_key: :user_id
end
答案 1 :(得分:0)
我相信我刚刚遇到了答案。通过为lambda提供属性,rails将提供记录。
class Account
has_many :orders,
->(record) { where('orders.account_id IS NULL OR orders.account_id = ?', record.id ) },
primary_key: :user_id, foreign_key: :user_id
end