ActiveRecord的比较和按位接口在哪里?

时间:2016-08-23 12:16:37

标签: ruby-on-rails activerecord

我想知道为什么Active Record没有为所有按位和比较运算符提供本机/烘焙查询接口。

我从2.3开始就一直在使用/支持Rails并等待它到达,但是现在Rails 5已经出来了,我觉得我需要问一下,OR,{{ 1}},ANDgte等,以及所有其他按位和比较运算符本身将被转换为Rails / AR?如果没有,我很好奇为什么?

2 个答案:

答案 0 :(得分:2)

- Rails 5确实引入了OR - http://blog.bigbinary.com/2016/05/30/rails-5-adds-or-support-in-active-record.html

AND - AND whereActiveRecord::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('*'))

希望这有用。