如何合并来自两个不同模型的查询

时间:2020-10-30 04:11:32

标签: ruby-on-rails ruby postgresql activerecord

我有三个看起来像这样的模型

  1. 特威特
    class Twit < ApplicationRecord
      belongs_to :user
    
      has_many :retwits, foreign_key: :twit_id, class_name: "Retwit", dependent: :destroy
    
      has_many :mentions, dependent: :destroy
      
      validates :body, presence: true, length: { maximum: 280 }
    end
  1. Retwit
    class Retwit < ApplicationRecord
      belongs_to :twit, foreign_key: :twit_id, class_name: 'Twit' 
      belongs_to :retwiter, foreign_key: :retwiter_id, class_name: 'User'
      
      validates :twit, uniqueness: { scope: :retwiter }
    end
  1. 用户
    class User < ApplicationRecord
    has_many :twits, dependent: :destroy
    has_many :retwits, foreign_key: :retwiter_id, class_name: 'Retwit', dependent: :destroy
    end

我想在其中(twit.user = some_user或retwit.retwiter = some_user)查询Twits和Retwits。我正在使用以下代码进行查询,但是它变成了数组,因此我无法在其上使用用户ActiveRecords收集方法:

    (Twit.where(user: people) + Retwit.where(retwiter: people))

我想像这样使用ActiveRecords收集方法:


    (Twit.where(user: people) + Retwit.where(retwiter: people)).offset(0).limit(5)

这是行不通的,因为将两个查询加在一起会返回一个数组。 是否可以在一个查询中返回Twits和Retwits的集合?如果可以,怎么办?

0 个答案:

没有答案
相关问题