Rails合并了多个来源

时间:2012-08-27 23:35:07

标签: ruby-on-rails activerecord

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

我有以下数据库设置:

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

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

0 个答案:

没有答案