Techioz Blog

ActiveRecord モデルの after_save コールバックで一時属性が削除される

概要

Rails ActiveRecord クラスの after_save コールバック中に一時属性を使用するにはどうすればよいですか?

これが私が今やっていることです。

DB によってサポートされる複数の属性を持つモデル クラスがあります。 DBに保存されない一時的な属性を追加したいと考えています。

class Model < ActiveRecord::Base

 after_save :after_save_callback_func
 attr_accessor :a

 def after_save_callback_func
   puts self.a
 end

 def some_random_func
  self.a = 'Hello World'
 end
  
end

after_save コールバック中に一時属性 a に設定された値を使用したいのですが、一時属性が self オブジェクトに存在しなくなっていることがわかります。

解決策

上記のコメントで述べたように、このパターンはそのまま機能します。機能しなかったのは、単体テストの仕様ファイルにあるこれでした。