我有以下型号:
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查看了其他问题,但我不确定这些情况是否与此类似。
答案 0 :(得分:0)
我认为这应该有效:
cardable_ids = User.active.pluck(:id) + Organisation.active.pluck(:id)
Card.where(cardable_id: cardable_ids)