【发布时间】:2015-04-11 17:02:04
【问题描述】:
我正在尝试为我的应用程序编写一个搜索查询,它将根据查询字符串搜索与该字符串匹配的组或用户。
这是我写的:
def search_api
@groups = Group.where("name ILIKE '#{params[:query]}'")
@users = User.where("first_name ILIKE '#{params[:query]}' OR last_name ILIKE '#{params[:query]}")
end
有没有办法将这两个查询组合成一个 activerecord 关系数组?除了对两个数组进行迭代并将它们合二为一的蛮力吗?
【问题讨论】:
-
您将无法创建一个结合这两个结果的查询,除非组和用户通过单表继承位于同一个表中。这是因为它们将位于两个不同的表中,而 ActiveRecord 只允许您一次访问一个表(除非您使用联合编写自己的 SQL,但这无论如何都会使您远离 AR 结果,并且您无法加入您的方法)
-
@SharvyAhmed PG::SyntaxError: 错误: ":" 第一行或附近的语法错误: SELECT * FROM groups WHERE name ILIKE :query UNION SELECT * ...
标签: ruby-on-rails ruby-on-rails-4 activerecord