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 に答える