ARel按字符串长度选择行

时间:2014-12-02 15:16:24

标签: ruby-on-rails activerecord arel

有没有办法使用ARel按字符串字段的大小选择记录?例如,如果我有一堆用户,我可以选择名字不超过3个字符的所有用户吗?我可以使用字符串

执行以下操作
User.where('LENGTH("users"."firstname") < 3')

我希望能够做类似

的事情
User.where(User.arel_table[:firstname].length.lt(3)

1 个答案:

答案 0 :(得分:1)

不幸的是没有。话虽如此,您尝试使用Arel功能的原因是为了避免数据库相关的SQL功能(例如Postgres和Mysql具有不同的日期处理功能)。另一方面,LENGTH()是一个标准的SQL函数,你不会遇到该查询的可移植性问题。

tl; dr - 为一切使用自定义SQL是不好的做法。战略性地使用自定义SQL是完全正常的。