ruby-on-rails - ARel 按字符串长度选择行

标签 ruby-on-rails activerecord arel

有没有办法使用 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/

相关文章:

sql - 创建ActiveRecord中是否不存在功能?

ruby-on-rails - Cancan 嵌套资源限制对索引的访问

php - 是否可以使用 Codeigniter Active Record 更新 JOINed 表?

postgresql - AREL:使用 from 子句编写复杂的更新语句

ruby-on-rails - Rails 使用哈希数组查找记录

ruby-on-rails - 如何在 Rail 的 Jbuilder JSON 中设置订单

ruby-on-rails - rails 中的单元测试 - 带回形针的模型

mysql - 将字符串转换为事件记录查询语句

ruby-on-rails - 如何在 Ruby on Rails 中获取已保存记录的 id

ruby-on-rails - 你能加入另一个在 ARel 中不是关联的表吗?