0

canceledRails 3.1.4 アプリのテーブル レコードに列があります。最初はcanceled、Firefox SQLite マネージャーで BOOL として作成されました。これは、ソフトウェアによって提供されるデフォルトの型です。canceled = falsein rails では、colfalseのレコードテーブルに保存されましたcanceled。問題は、 を使用してクエリを実行した場合、 が sqlite3 で FALSE として解釈されないため、 asRecord.where("canceled = ?", false)のレコードが選択されなかったことです。all = false を選択するには、次のことを行う必要があります。canceledfalsefalsecanceledRecord.where("canceled =? OR canceled =?", false, 'false')

canceledSQLite マネージャーで のデータ型を BOOL から 'boolean' に手動で変更した後、 asRecord.where("canceled =? ", false)で新しく作成されたレコードを取得できます。SQLite マネージャーでは、これらの値はRails によって FALSE として解釈されるものとして表されます。canceledfcanceledf

動作するようにテーブル レコードを修正する方法 (「false」を使用canceled)Record.where("canceled =? ", false)は? 本当にありがとう。

更新: Rails コンソールでテーブル レコードを照会canceledすると、ブール値 (true または false) として動作しません。false列内のすべてのレコードは、またはcanceledでピックアップできません。しかし、返された .classはまだRails コンソールにあります。奇妙ですね。Record.where("canceled =?", true)Record.where("canceled =?", false)canceledFalseClass

4

1 に答える 1

2
UPDATE my_table
   SET canceled = true -- or 1 check the table
 WHERE canceled = 'true'


UPDATE my_table
   SET canceled = false
 WHERE canceled = 'false'

編集:

これを試して

my_model.update_all( {:canceled => true}, {:canceled => 'true'} )
my_model.update_all( {:canceled => false}, {:canceled => 'false'} )
于 2012-07-13T18:15:33.293 に答える