我想将用户模型中的两个关系合并为一个关系
我有以下数据库设置:
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
但是这种方式我相信它会首先从两个源中获取所有对象,然后在合并查询中再次获取它们,这会进行不必要的查询。