0

我有 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吗?

4

2 回答 2

1

是的,现在您不能将关联传递给该where方法。但是你可以在 Rails 4 中做到这一点。是一个具有此功能的提交。

于 2013-01-04T17:07:00.750 回答
0

我认为没有一种优雅的方法(截至目前,请参阅@nash 的回答)。但是,如果你有一个实例a_product并且它有has_manyon subscriptions,为什么不直接转过来说:

subscriptions = a_product.subscriptions
于 2013-01-04T17:07:02.667 回答