Ruby on rails 合并两个ActiveRecord查询结果
我目前有两个活动记录查询,我想合并在一起 joins("join relationships ON user_id = followed_id"). where("follower_id = #{user.id}") 联接(“在用户\u id上联接关系=后面的\u id”)。 其中(“follower_id=#{user.id}”) 及 其中(:user\u id=>user.id) 基本上,我希望第二个的结果与第一个类似于SQL中的Ruby on rails 合并两个ActiveRecord查询结果,ruby-on-rails,activerecord,ruby-on-rails-3,Ruby On Rails,Activerecord,Ruby On Rails 3,我目前有两个活动记录查询,我想合并在一起 joins("join relationships ON user_id = followed_id"). where("follower_id = #{user.id}") 联接(“在用户\u id上联接关系=后面的\u id”)。 其中(“follower_id=#{user.id}”) 及 其中(:user\u id=>user.id) 基本上,我希望第二个的结果与第一个类似于SQL中的UNION语句。在ActiveRe
UNION
语句。在ActiveRecord中可以这样做吗
我更喜欢使用一个联合,而不是必须将所有后面的id
s连接在一个字符串中,并在sql中使用in
子句
有什么想法吗
-----编辑------
我正在寻找一种方法,使其能够与延迟加载一起工作使用
关系和关系
:
Model.joins("join relationships ON user_id = followed_id").where("follower_id = {user.id}") & Model.where(:user_id => user.id)
这对我很有用:
Model.where(...) | Model.where(...)
这对我很有用:
Model.where(...) | Model.where(...)
Rails/ActiveRecord的更新版本可能本机支持此语法。它看起来类似于:
Model.where(foo: 'bar').or.where(bar: 'bar')
或者你也可以,只要坚持以下几点就行了:
Model.where('foo= ? OR bar= ?', 'bar', 'bar')
引用此将强制ActiveRecord将结果放入数组中。这可以通过延迟加载来完成吗?ActiveRecord::Relation上的
&
方法是合并的别名,从Rails 3.0.9开始,该别名已被删除。删除它正是因为@MikeJohnson指出的混淆:它不是合适的操作符。改用relation.merge(other_relation)
。@zzawaideh只是想知道您是如何解决这个问题的。我正在尝试检索两个表,但需要它作为ActiveRecord::relation而不是数组。任何帮助都会非常感激哇,所以“合并”将它们与AND组合在一起。什么是或等效的?@Neil在rails repo中观察这个问题:你在这里救了我。谢天谢地,这将ActiveRecord_关系转换为数组对象。不能对结果对象应用.where等活动记录方法