0

我想将用户模型中的两个关系合并为一个关系

我有以下数据库设置:

class User < ActiveRecord::Base
  has_many :shared_cards
  has_many :card_instances
  has_many :shared_card_instances, through: :shared_cards, source: :card_instances
end

class CardInstance < ActiveRecord::Base
  belongs_to :user
  belongs_to :shared_card
end

class SharedCard < ActiveRecord::Base
  belongs_to :user
  has_many :card_instances
end

我想将用户表中的 'card_instances' 和 'shared_card_instances' 合并到示例 'all_card_instances'

我想合并它们的原因是因为我想得到一个 ActiveRecord::Relation 以便我可以直接对所有对象进行搜索和排序

编辑:

我目前的做法:

all_card_instances = CardInstance.find_by_id(user.card_instances.pluck(:id) | user.shared_card_instances.pluck(:id))

现在我可以直接在返回的 ActiveRecord::Relation 对象上调用“.order”和我的 pg_search_scope

但是这种方式我相信它会首先从两个源中获取所有对象,然后在合并查询中再次获取它们,这会进行不必要的查询。

4

0 回答 0