假设我们有2个AR模型:
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查询无效。
我想避免将冗余外键添加到其中一个连接模型中。
答案 0 :(得分:0)
这应避免N + 1次查询
Proposal.includes(user: :concerns).where(condition: 123)