Ruby on rails 4 两人的结合有许多联系

Ruby on rails 4 两人的结合有许多联系,ruby-on-rails-4,rails-activerecord,Ruby On Rails 4,Rails Activerecord,我在Postgres中使用rails 4.1,我有这样一个模型: class User < ActiveRecord::Base has_many :events has_many :event_memberships has_many :shared_events, through: :event_memberships, source: event def all_events #... code goes here end end 但是它将执行两个SQ

我在Postgres中使用rails 4.1,我有这样一个模型:

class User < ActiveRecord::Base
  has_many :events
  has_many :event_memberships
  has_many :shared_events, through: :event_memberships, source: event

  def all_events
    #... code goes here
  end
end
但是它将执行两个SQL查询而不是一个,并且我将无法对结果进行排序或限制

我也试过这样的方法:

def all_events
  User.find_by_sql("(#{events.to_sql}) UNION (#{shared_events.to_sql})")
end
还是这个方法 但这两种方法都会产生这样的错误:

PG::UndefinedParameter: ERROR:  there is no parameter $1
这似乎是rails 4+中已知的错误,它不会被解决

因此,我在这里的唯一选择似乎是编写简单的旧SQL。
有人有更好的想法吗?

我很好奇,当你这样做时会发生什么:
用户。按sql((?)联合(?)查找,事件。到sql,共享事件。到sql)
?我无法让它工作。似乎问号插值为sql不理解的to_sql语句返回一个带引号的字符串<代码>PG::语法错误:错误:在“选择”事件处或附近出现语法错误
PG::UndefinedParameter: ERROR:  there is no parameter $1