有没有办法使用 ARel 按字符串字段的大小选择记录?例如,如果我有一群用户,我可以选择名字为 3 个或更少字符的所有用户吗?我可以用字符串做类似下面的事情
User.where('LENGTH("users"."firstname") < 3')
我希望能够做类似的事情
User.where(User.arel_table[:firstname].length.lt(3)
最佳答案
不幸的是没有。话虽这么说,您尝试使用 Arel 功能的原因是为了避免依赖于数据库的 SQL 功能(例如 Postgres 和 Mysql 具有不同的日期处理函数)。另一方面,LENGTH()
是一个标准 SQL 函数,您不会遇到该查询的可移植性问题。
tl;dr - 对所有事情都使用自定义 SQL 是不好的做法。有策略地使用自定义 SQL 是完全没问题的。
关于ruby-on-rails - ARel 按字符串长度选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27252760/