1
、私は次のモデルを持っている
class Conversation < ActiveRecord::Base
belongs_to :sender, foreign_key: :sender_id, polymorphic: true
belongs_to :receiver, foreign_key: :receiver_id, polymorphic: true
。
class Owner < ActiveRecord::Base
。
class Provider < ActiveRecord::Base
。
class Account < ActiveRecord::Base
has_one :provider, dependent: :destroy
has_many :owners, dependent: :destroy
会話では、sender
はオーナーまたはプロバイダーになることができます。意図したとおり、この作品
Conversation.includes(sender: :account).limit 5
:このことを念頭に、私は次のようにクエリを行うことができます。問題は、関連付けられたモデルアカウントでwhere句を使用する場合です。アカウントの国が米国である会話をフィルタしたいこのような何か:
Conversation.includes(sender: :account).where('accounts.country' => 'US').limit 5
しかし、この文句を言わない仕事、私はエラーActiveRecord::EagerLoadPolymorphicError: Cannot eagerly load the polymorphic association :sender
クエリのこの種を行うための正しい方法は何ですか取得しますか?
私もjoins
を使用しようとしましたが、同じエラーが発生します。
「Conversation.preload ...」を試しましたか? –
はい、同じエラーが発生します。 –