1

Google で徹底的に検索しても、これを行う方法の手がかりが得られないため、質問します。

めったに使用されず、残念ながら空のフィールドでも改行とダッシュが散らばっている列フィールドの例を引っ張ろうとしているので、データがあるものだけを求めることはできません。少なくとも 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 に答える