2016-10-10 8 views
0

私はRails 4.2.7を使用しています。その情報をデータベースに実際に保存することなく、モデルの配列のフィールドを一括更新するにはどうすればよいですか?ルビーtahtの1行の途中、私は、アレイ上iteraetと個別に各オブジェクトを更新でき実現が、私はスリッカーがあります理解私は配列内のモデルのフィールドを一括更新するにはどうすればよいですか?

my_objcts_arr.update_all(my_object: my_object) 

を試してみましたが、これは誤りで

NoMethodError: undefined method `update_all' for #<Array:0x007f80a81cae50> 

結果私は気づいていない。

+0

「update_all」を使用するには、ActiveRecord関係が必要です。あなたの 'my_objcts_arr'はどうやっていますか? – AbM

答えて

0

update_allは、クラスレベルのアクティブレコードモデル/リレーション、つまりUserまたはTaxReturnで呼び出す必要があります。ここにはいくらか関連したSO post showing some examplesがあり、ここにはthe api doc for update_allです。それはデータベースにUPDATEを直接送ります(それはアクティブなレコードメソッドです)。だからあなたの望むものではありません。

自分で値を更新して更新することをお勧めします。with collectなど、これは1行だけです。

foo = [{:a=>"a", :b=>"b"}, {:a=>"A", :b=>"B:}] 
// => [{:a=>"a", :b=>"b"}, {:a=>"A", :b=>"B"}] 
foo.collect{|x| x[:a]="C"} 
// => ["C", "C"] 
foo 
// => [{:a=>"C", :b=>"b"}, {:a=>"C", :b=>"B"}] 
+0

x [:a]は私にエラーを与えましたが、x.aは働きました。 –

関連する問題