如何在sql查询中实现and、or子句?RubyonRails

如何在sql查询中实现and、or子句?RubyonRails,ruby,ruby-on-rails-3,activerecord,Ruby,Ruby On Rails 3,Activerecord,我试着四处看看,但找不到关于如何实现和,|(或)组合的答案。我犯了一个错误。代码如下所示: allgames = GameInfo.Get.where(["list = ? AND (lang = ? OR lang = ?)", "yes", "en", @lang]).order(:order) 我得到的错误如下: The specified query expression syntax is not valid. 请给我点光 关于,sql中未使用管道: where("list = ?

我试着四处看看,但找不到关于如何实现|(或)组合的答案。我犯了一个错误。代码如下所示:

allgames = GameInfo.Get.where(["list = ? AND (lang = ? OR lang = ?)", "yes", "en", @lang]).order(:order)
我得到的错误如下:

The specified query expression syntax is not valid.
请给我点光


关于,sql中未使用管道:

where("list = ? AND (lang = ? OR lang = ?)", "yes", 'en',@lang)

这与上面的错误消息相同,
@lang
从URL保存
参数[:lang]
,您可以复制生成的查询吗?或者至少是整行代码。将管道(
|
)替换为
,正如我在回答中所写。你能编辑你的答案吗?你需要去掉方括号!如果你认为
|
是有效的SQL,那么你需要一本更好的参考手册。真的得到了参考。通常在SQL中,您会使用
如果仔细阅读答案,您会发现它使用的是MetaWhere gem,并且gem不再被更新。对于文本字符串,而不是Ruby代码,您需要使用纯SQL。这个例子使用了一些将Ruby表达式转换为SQL的魔法,这种技术已经不受欢迎了,因为它通常不会产生预期的结果。谢谢大家!非常感谢!