名前空間付きのモデルを使用して、gem に抽出された共通のモデルのセットがあります。
module Gemifive
class Activity < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :activities
end
end
それが宝石「ジェミファイブ」にあります。ここまでは順調ですね。
この宝石のモデルを使用するアプリでは、次のことができますGemifive::Activity.where(user_id: user.id)
。そのテーブルにはuser_id
列があるため、これは正常に機能します。
SELECT "gemifive_activities".* FROM "gemifive_activities" WHERE "gemifive_activities"."user_id" = 18`
ただし、次は機能しませんGemifive::Activity.where(user: user)
。これにより、無効な次の SQL が生成されます。
SELECT "gemifive_activities".* FROM "gemifive_activities" WHERE "gemifive_activities"."user" = 18
私は問題なくアクセスできるGemifive::Activity.first.user
ので、belongs_to
関連付けが機能していることがわかります。この ActiveRecord 規則を使用できないのはなぜですか?