合并两个ActiveRecord查询结果

zza*_*deh 22 activerecord ruby-on-rails ruby-on-rails-3

我目前有两个活跃的记录查询,我想将它们组合在一起

joins("join relationships ON user_id = followed_id").
              where("follower_id = #{user.id}")

where(:user_id => user.id)

基本上我希望第二个的结果与第一个类似于UNIONSQL中的语句.可以用这种方式在ActiveRecord中完成吗?

我更喜欢使用union而不是必须连接followed_id字符串中的所有s并使用INsql中的子句.

有任何想法吗?

-----编辑------我正在寻找一种方法来使用延迟加载

Cor*_*ray 30

这对我很有用:

Model.where(...) | Model.where(...)
Run Code Online (Sandbox Code Playgroud)

  • 这会将ActiveRecord_Relation转换为Array对象.您不能在结果对象上应用.where等活动记录方法 (20认同)
  • 实际上,这没有按预期工作. (3认同)

fan*_*uka 12

用途relation & relation:

Model.joins("join relationships ON user_id = followed_id").where("follower_id = {user.id}") & Model.where(:user_id => user.id)
Run Code Online (Sandbox Code Playgroud)

  • @zzawaideh只是想知道你是否有任何想法如何解决这个问题我试图检索两个表但需要它作为ActiveRecord :: Relation不是一个数组.任何帮助将非常感激 (10认同)
  • ActiveRecord :: Relation上的`&`方法是`merge`的别名,从Rails 3.0.9开始,该别名已被删除.它完全被@MikeJohnson指出的混乱所取消:它不是合适的操作员.请使用`relation.merge(other_relation)`. (9认同)
  • 这迫使ActiveRecord急切地将结果放入数组中.这可以通过延迟加载来完成吗? (6认同)
  • 哇,所以"合并"将它们与AND组合在一起.什么是OR等价物? (3认同)