gpt4 book ai didi

sql - 使用 SQL IN 和 SQL OR 运算符的 Rails 3 ActiveRecord 查询

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:56 25 4
gpt4 key购买 nike

我正在使用“where”语法编写一个 Rails 3 ActiveRecord 查询,它同时使用了 SQL IN 和 SQL OR 运算符,但不知道如何同时使用它们。

此代码有效(在我的用户模型中):

Question.where(:user_id => self.friends.ids)
#note: self.friends.ids returns an array of integers

但是这段代码

Question.where(:user_id => self.friends.ids OR :target => self.friends.usernames)

返回这个错误

syntax error, unexpected tCONSTANT, expecting ')'
...user_id => self.friends.ids OR :target => self.friends.usern...

知道如何在 Rails 中编写这个,或者原始 SQL 查询应该是什么吗?

最佳答案

您不需要使用原始 SQL,只需提供字符串形式的模式,并添加命名参数:

Question.where('user_id in (:ids) or target in (:usernames)', 
:ids => self.friends.ids, :usernames => self.friends.usernames)

或者位置参数:

Question.where('user_id in (?) or target in (?)', 
self.friends.ids, self.friends.usernames)

您还可以使用优秀的 Squeel gem,正如@erroric 在他的回答中指出的那样(只有当您需要访问 self 或实例变量时才需要 my { } block ):

Question.where { user_id.in(my { self.friends.ids }) |
target.in(my { self.friends.usernames }) }

关于sql - 使用 SQL IN 和 SQL OR 运算符的 Rails 3 ActiveRecord 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4207936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com