2017-11-09 15 views
5

データベースには、モデル内でserialize関数を使用して配列フィールドis_deletedがあります。データベースフィールドに配列の値を追加したいと思います。 postgresqlで使用される関数を次に示します。配列フィールドの値を 'append'関数で更新する方法

Message.update_all(['is_deleted = array_append(is_deleted, ?)', 2]) 

sqlliteデータベースではどうすればできますか?

答えて

1

あなたは私が既に持っているあなたが店アレイに使用する列をしたい場合は、そのはCOLUMN_TYPE文字列またはtext

Message.all.each { |m| m.update_attribute(:is_deleted, m.is_deleted.push(2)) } 
+0

あるべきサイドノート用

Class Message < ActiveRecord::Base serialize :is_deleted, Array end 

モデルにserialize列に必要私がしたいのは、単一のクエリですべてのレコードを更新し、既存の値でフィールド内に新しい配列値を追加したいということです。Postgresの例のように私は質問で提供しました。 –

+1

私は答えを変更しました。どうぞご覧ください。 – Gabbar

+0

これは良い解決策の1つです。しかし、上記のpostgres SQLクエリのような単一のクエリでそれを行うことは可能ですか?私は1000以上のレコードを持っており、1000クエリでは実行できません。 –

関連する問題