2017-12-01 21 views
1

次のようにハッシュのハッシュがあるとします。 「更新」を使用して、次のようにすべてのレコードを更新することができます。Ruby on rails:複数のレコードをレールで更新する

people = { 1 => { "first_name" => "David", "last_name" => "Freeman" }, 2 => { "first_name" => "Jeremy", "last_name" => "Stone" } .....} 

Person.update(people.keys, people.values) 

これは、各レコードに対してUPDATEクエリを実行します。 "update_all"を使って、これを達成するにはどのようにすればよいでしょうか?

this)を参照していますが、解決策が見つかりませんでした。

ありがとうございます。

+0

@SRack私はいくつか更新する必要があり、各レコードごとに異なる値を設定する必要がある場合、どのようなパラメータにする必要があるのか​​分かりませんでした。 – Avinash142857

+0

ActiveRecordを使って構築しようとするものは、どのようにプレーンなSQLクエリーになりますか? – spickermann

+0

@spickermann重複したキーの更新時に、人物(id、first_name、last_name)の値(1、 "David"、 "Freeman")、(2、 "Jeremy"、 "Stone")に挿入するfirst_name =値(first_name)、last_name =値(last_name); – Avinash142857

答えて

1

私はこれが可能ではないと思います。これは "update_all"の性質ではありません。必要な結果を得るためにSQLクエリを書くことを想像してみましょう。それぞれのIDを照合し、各IDに対して必要な更新を行います。したがって、 "update_all"とは対照的です。

タプルのセットに対して同じ更新を実行する場合は、「update_all」を使用する必要がありますが、明らかに、first_nameとlast_nameはタプルごとに異なります。

私は、IDのインデックスが付けられていると考えると、単に「更新」を使用してもパフォーマンスにはほとんど影響しません。ただし、ネイティブSQL文を作成するオプションは常にあります。

関連する問題