

下記コードのようにFooオブジェクトからsliceで属性を指定して、同じ属性名をもつbarの値を一括でupdateしたいのですが、`update_all`で指定する`attribute`をどのように書けばよいかわからず、試行錯誤しましたが、うまい方法が見つからずアドバイスを頂ければ幸いです。

[code]

    foo = Foo.first
    bar = Bar.where(hoge: hoge) # ActiveRecord::Relation
    
    foo.attributes.slice('a','b','c').each do |attribute, value|
      bar.update_all(attribute: value) # この部分の書き方がわからないです...
    end
    
[/code]


CC BY-SA 3.0
2014-12-30T05:07:41.210
2815
2014-12-30T16:00:57.933
2014-12-30T16:00:57.933
5902
5902
question
ruby-on-rails
sliceした属性を変数にしてupdate_allの引数に渡したいのですが、表記方法がわからず困っています


`update_attributes`を使ってはどうでしょうか？

[code]

    foo = Foo.first
    bars = Bar.where(hoge: hoge) # ActiveRecord::Relation
    
    bars.each{|bar| bar.update_attributes(foo.attributes.slice('a','b','c')) }
    
[/code]


CC BY-SA 3.0
2014-12-30T08:25:34.707
2823
2014-12-30T08:25:34.707
3271
2815
answer