19191
railsで保存した直後に保存したデータをupdateしたいのですが、どうしたらよいのでしょうか。

```

    def after_save
      self.update(:name => self.name + 'ほげほげ')
    end
    
```

このような感じでカラムのデータを書き換えるような事を想定しています。
CC BY-SA 3.0
2015-11-23T04:42:01.633
19187
2015-11-23T06:54:00.093
9149
question
ruby-on-rails
railsで保存した直後にデータを加工したい
保存するデータを書き換えたいということであれば、`before_save` を使うと良いです。

```

    class Hogege < ActiveRecord::Base
      before_save :fix_name
    
      private
    
      def fix_name
        self.name += "ほげほげ"
      end
    end
    
```
CC BY-SA 3.0
2015-11-23T06:14:13.377
19191
2015-11-23T06:14:13.377
76
19187
answer
モデルを保存した直後に、属性を更新するには`after_save`コールバックで`update_column`メソッドを実行します。具体的なコードは次のとおりです。

```

    class Model < ActiveRecord::Base
      after_save do
        update_column(:name, "#{@name}ほげほげ")
      end
    end
    
```

ポイントは、[update_attribute](http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-
i-update_column)です。update_columnは、バリデーションとコールバックを実行しません。
CC BY-SA 3.0
2015-11-23T06:54:00.093
19196
2015-11-23T06:54:00.093
7420
19187
answer