Active Record急切加载多态关联

时间:2018-01-12 14:05:31

标签: ruby-on-rails rails-activerecord polymorphic-associations

我有以下型号:

class User < ApplicationRecord
  has_one :card, as: :cardable
  scope :active, -> { where(active: true) }
end

class Organisation < ApplicationRecord
  has_one :card, as: :cardable
  scope :active, -> { where(active: true) }
end

class Card < ApplicationRecord
  belongs_to :cardable, polymorphic: true
end

我想查找其相关用户或组织处于活动状态的所有卡片。

我认为以下内容可行:

Card.includes(:cardable).where(cardable: {active: true})

但这会引发错误:

ActiveRecord::EagerLoadPolymorphicError: Cannot eagerly load the polymorphic association :cardable

我正在尝试使用ActiveRecord做什么? 我用similar title查看了其他问题,但我不确定这些情况是否与此类似。

1 个答案:

答案 0 :(得分:0)

我认为这应该有效:

cardable_ids = User.active.pluck(:id) + Organisation.active.pluck(:id)
Card.where(cardable_id: cardable_ids)