【发布时间】:2018-12-12 09:53:22
【问题描述】:
这是我的模型:
class Team < ApplicationRecord
has_many :team_permissions
end
class TeamPermission < ApplicationRecord
belongs_to :team
belongs_to :permissible, polymorphic: true
end
class User < ApplicationRecord
has_many :team_permissions, as: :permissible
end
我知道您可以通过以下方式解决您的 N+1 问题:
Team.includes(team_permissions: :permissible)
现在,我只想在一个条件下加入权限。例如,如果它们不属于一组 id,那么我希望这可以工作,但它会引发错误。
ActiveRecord:
Team.includes(team_permissions: :permissible).where.not(team_permissions: { id: team_permission_ids })
Error:
ActionView::Template::Error (Cannot eagerly load the polymorphic association :permissible):
进一步玩弄它,我发现以下方法按我想要的方式工作,但它不能解决 N+1 问题。
Team.includes(:team_permissions).where.not(team_permissions: { id: team_permission_ids })
我怎样才能在条件中包含对.includes 的预加载?
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-5 polymorphic-associations