我想知道为什么Active Record没有针对所有按位和比较运算符的本机/烘焙式查询接口。ActiveRecord的比较和位接口在哪里?
我一直在使用,因为2.3和/支撑轨排序的只是等待它的到来,但现在导轨5超出我觉得我要问,是OR
,AND
,gte
,lte
等。以及所有其他按位和比较运算符都将被原生地引入到Rails/AR中?如果没有,我很好奇为什么?
我想知道为什么Active Record没有针对所有按位和比较运算符的本机/烘焙式查询接口。ActiveRecord的比较和位接口在哪里?
我一直在使用,因为2.3和/支撑轨排序的只是等待它的到来,但现在导轨5超出我觉得我要问,是OR
,AND
,gte
,lte
等。以及所有其他按位和比较运算符都将被原生地引入到Rails/AR中?如果没有,我很好奇为什么?
或 - Rails 5确实推出了OR
-http://blog.bigbinary.com/2016/05/30/rails-5-adds-or-support-in-active-record.html。
和 - 是不是AND
只是在ActiveRecord::Relation
的where
链接?
其他按位运算符 - 我同意,ActiveRecord中没有包装对象。
您可以检查出squeel
gem [railscast]。它提供了一个很好的API来完成这些操作。
考虑直接使用AREL。它提供了对按位运算符的支持,以及其他强大的东西。在某些方面,语法比直接的ActiveRecord :: Relation构建语法稍微有点神秘,但是获得的额外控制粒度非常值得复杂。
这里是你如何使用位运算符与AREL一个简单的例子(从文档中直取):
users = Arel::Table.new(:users)
users.where((users[:bitmap] & 16).gt(0)).project(Arel.sql('*'))
希望这是有帮助的。
谢谢,我以前不知道'OR',我没有看到任何rails文档。 – yekta