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