有没有办法使用ARel按字符串字段的大小选择记录?例如,如果我有一堆用户,我可以选择名字不超过3个字符的所有用户吗?我可以使用字符串
执行以下操作User.where('LENGTH("users"."firstname") < 3')
我希望能够做类似
的事情User.where(User.arel_table[:firstname].length.lt(3)
答案 0 :(得分:1)
不幸的是没有。话虽如此,您尝试使用Arel功能的原因是为了避免数据库相关的SQL功能(例如Postgres和Mysql具有不同的日期处理功能)。另一方面,LENGTH()
是一个标准的SQL函数,你不会遇到该查询的可移植性问题。
tl; dr - 为一切使用自定义SQL是不好的做法。战略性地使用自定义SQL是完全正常的。