1

我问是因为彻底的谷歌搜索没有返回关于如何做到这一点的线索。

我正在尝试提取一个很少使用的列字段的示例,不幸的是,即使在空字段中也散布着换行符和破折号,所以我不能只要求那些有数据的字段。我需要一个至少有 10-15 个字符或类似内容的列。我还可以想象这个查询对于验证预先存在的数据很有用。我知道执行此操作的验证器,但我不是在尝试验证,而是在尝试搜索。谢谢!

4

2 回答 2

2

似乎 ActiveRecord 不支持这一点。但是你无论如何都可以这样做(Mysql示例)

Model.where("CHAR_LENGTH(text_field) = ?", 10)

在 Postgres 中同样应该工作,但在文档中它说使用 char_length()


您还可以做的是使用回调保存记录存储字段的大小

before_save {|r| r.text_field_size = r.text_field.size}

有了这个,你现在可以用它来查询,这将是 DB 不可知的。

Model.where(text_field_size: 10)
于 2012-08-07T00:21:00.390 回答
0

我认为您必须在 SQL 中编写请求的一部分。

对于 MySQL,使用类似:

Model.where("CHAR_LENGTH(field_name) >= ?", min_length)
于 2012-08-07T00:19:30.283 回答