可能非常简单,但我无法在线查找有关此问题的文档 我在Ruby中有两个activerecord查询,我想通过OR运算符
连接在一起@pro = Project.where(:manager_user_id => current_user.id )
@proa = Project.where(:account_manager => current_user.id)
我是ruby的新手,但我自己尝试使用||
@pro = Project.where(:manager_user_id => current_user.id || :account_manager => current_user.id)
这没有用,所以1.我想知道如何在Ruby和2中实际执行此操作。如果那个人也可以在这样的ruby语句中让我对布尔语法有所了解。 例如AND,OR,XOR ...
答案 0 :(得分:9)
在这种情况下,您无法使用Hash语法。
Project.where("manager_user_id = ? OR account_manager = ?", current_user.id, current_user.id)
答案 1 :(得分:2)
您应该查看API文档并遵循惯例。在这种情况下,您可以将代码发送到where方法。
这应该有效:
@projects = Project.where("manager_user_id = '#{current_user.id}' or account_manager_id = '#{current_user.id}'")
这应该是安全的,因为我假设current_user的id值来自你自己的应用程序,而不是来自外部来源,例如表单提交。如果您使用意图在查询中使用的表单提交数据,则应使用占位符,以便Rails创建正确的转义SQL。
# with placeholders
@projects = Project.where(["manager_user_id = ? or account_manager_id = ?", some_value_from_form1, some_value_from_form_2])
当您将多个参数传递给where方法(带占位符的示例)时,Rails会将第一个参数视为SQL的模板。数组中的其余元素将在运行时被第一个元素(即模板)中使用的占位符数(?)替换。
答案 2 :(得分:1)
Metawhere可以进行OR操作,还有很多其他漂亮的东西。