我想知道为什么Active Record没有为所有按位和比较运算符提供本机/烘焙查询接口。
我从2.3开始就一直在使用/支持Rails并等待它到达,但是现在Rails 5已经出来了,我觉得我需要问一下,OR
,{{ 1}},AND
,gte
等,以及所有其他按位和比较运算符本身将被转换为Rails / AR?如果没有,我很好奇为什么?
答案 0 :(得分:2)
或 - Rails 5确实引入了OR
- http://blog.bigbinary.com/2016/05/30/rails-5-adds-or-support-in-active-record.html。
AND - AND
where
上ActiveRecord::Relation
的链接不是new LatLng(mLastLocation.getLatitude(), (mLastLocation.getLongitude()-200m))
吗?
其他按位运算符 - 我同意,ActiveRecord中还没有包含它们的包装器。
您可以查看squeel
gem [railscast]。它提供了一个很好的API来执行这些操作。
答案 1 :(得分:1)
考虑直接使用AREL。它为逐位运算符提供支持,包括其他强大的东西。在某些方面,语法比直接的ActiveRecord :: Relation构建语法更加晦涩,但是你获得的额外控制粒度非常值得复杂。
以下是如何使用AREL的按位运算符的快速示例(直接从文档中获取):
users = Arel::Table.new(:users)
users.where((users[:bitmap] & 16).gt(0)).project(Arel.sql('*'))
希望这有用。