0
我々は2つのARモデルを持っていると仮定しましょう:ActiveRecordで2つの結合モデルを関連付ける方法は?
class User < ApplicationRecord
has_many :proposals
has_many :concerns
end
class Job < ApplicationRecord
has_many :proposals
has_many :concerns
end
提案と懸念は、両方のユーザーとジョブの間のモデルに参加している:
class Proposal < ApplicationRecord
belongs_to :user
belongs_to :job
end
class Concern < ApplicationRecord
belongs_to :user
belongs_to :job
end
私が解決しようとしている何を提案し、懸念を通じ関連付ける方法でありますユーザーと仕事の両方。私。私は、イーガーローディングなどを使用したい:
proposals.preload(:concerns).map do |proposal|
# proposal.concerns are preloaded here
# and all concerns have same user and job
end
私の現在のソリューションは、懸念の上にルックアップconcerns
方法だけで簡単です - N + 1つのクエリを実行しますので、それは無効です。
参加するモデルのいずれかに冗長な外部キーを追加しないようにしたいと考えています。
を照会し、これらの懸念は、すべてのジョブに関連付けられているすべてのユーザーの懸念を含むであろう。 – MikDiet
次に、 'jobs'に条件を追加してみることができます –
正確に何をしたいですか? –