没有* _id的ActiveRecord查询

时间:2013-01-04 16:26:12

标签: ruby-on-rails activerecord

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

2 个答案:

答案 0 :(得分:1)

是的,现在您无法将关联传递给where方法。但是你可以在Rails 4中完成它。Here是一个具有此功能的提交。

答案 1 :(得分:0)

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

subscriptions = a_product.subscriptions