因此,在Rails4中,添加了使用not查询这一长期期望的特性。
not
Article.where.not(title: 'Rails 3')
字符串or查询是否也有类似的支持,或者他们是否计划这样做,我在浏览发行说明时没有找到任何东西。显然我试过了
or
Article.where(title: 'Rails 3').or(title: 'Rails 4')
但这行不通。
ijnw1ujt1#
Article.where(title: ['Rails 3', 'Rails 4'])
就是你在活动记录中是怎么做的。使用“Rails-y”语法不可能复制任意的SQL查询,但您可以始终只传入文本sql。因此,您还可以执行以下操作:
Article.where("articles.title = 'Rails 3' OR articles.title = 'Rails 4'")
k4emjkb12#
这在Rails 5中是有效的:
Article.where(title: 'Rails 3').or(Article.where(title: 'Rails 4'))
Code example in Rails's source .
ego6inou3#
最常见的替代方法是@gregates最近在rails源代码中有拉取请求Add #any_of query method to active_record向活动记录添加或功能贡献者已经创建了一个gem以防其不被接受兼容其导轨3.2和4https://github.com/oelmekki/activerecord_any_of我还没有试过,但很快就希望使用它看起来不错。
#any_of
ru9i0ody4#
我知道这是一个老线索,但任何其他人寻找这个问题的解决方案可能会发现以下代码很有帮助:
Article.where(title: ["Rails 3", "Rails 4"])
也许这会帮助你让别人朝着正确的方向前进,而不必冒sql注入的风险。
6vl6ewon5#
看来rails master分支现在支持OR查询了。https://github.com/rails/rails/pull/16052我认为它将在下一个主要版本的框架中。
oymdgrw76#
Rails 5将支持它,但您可以在Rails 4.2中使用此后端口:https://github.com/Eric-Guo/where-or
6条答案
按热度按时间ijnw1ujt1#
就是你在活动记录中是怎么做的。
使用“Rails-y”语法不可能复制任意的SQL查询,但您可以始终只传入文本sql。
因此,您还可以执行以下操作:
k4emjkb12#
这在Rails 5中是有效的:
Code example in Rails's source .
ego6inou3#
最常见的替代方法是@gregates
最近在rails源代码中有拉取请求
Add
#any_of
query method to active_record向活动记录添加或功能贡献者已经创建了一个gem以防其不被接受
兼容其导轨3.2和4
https://github.com/oelmekki/activerecord_any_of
我还没有试过,但很快就希望使用它看起来不错。
ru9i0ody4#
我知道这是一个老线索,但任何其他人寻找这个问题的解决方案可能会发现以下代码很有帮助:
也许这会帮助你让别人朝着正确的方向前进,而不必冒sql注入的风险。
6vl6ewon5#
看来rails master分支现在支持OR查询了。https://github.com/rails/rails/pull/16052
我认为它将在下一个主要版本的框架中。
oymdgrw76#
Rails 5将支持它,但您可以在Rails 4.2中使用此后端口:https://github.com/Eric-Guo/where-or