我有3个简单的模型:
class User < ActiveRecord::Base
has_many :subscriptions
end
class Product < ActiveRecord::Base
has_many :subscriptions
end
class Subscription < ActiveRecord::Base
belongs_to :user
belongs_to :product
end
我可以做a_subscription.product = a_product
而AR知道我的意思是product_id,一切正常。
但如果我这样做:
Subscription.where :product => a_product
它向我抛出错误Unknown column 'subscriptions.product'
- 它在第一种情况下知道我的意思是product_id但在后者中却没有。我只是想知道这是假设是或者我错过了什么?我可以通过说
Subscription.where :product_id => a_product
我必须指定_id
吗?
答案 0 :(得分:1)
是的,现在您无法将关联传递给where
方法。但是你可以在Rails 4中完成它。Here是一个具有此功能的提交。
答案 1 :(得分:0)
我认为没有一种优雅的方式(截至目前,请参阅@nash的回答)。但是,如果您有一个a_product
的实例且has_many
上有subscriptions
,为什么不转过来说:
subscriptions = a_product.subscriptions