Model.newの時に初期値を設定する その2
前の記事でinitializeメソッドのオーバーライドしていたけど、
Activerecordのdoc見るとafter_initializeというコードバックがあるみたいだったのでこっち使った方がよさそう。
直接あなたのアクティブレコードinitializeメソッドをオーバーライドする必要性を回避するために役立つことがあります。
だそうです。
class Item < ActiveRecord::Base def initialize(*args, &block) super self.start_on = DateTime.now.to_date if self.start_on.nil? self.end_on = DateTime.now.to_date + 1.week if self.end_on.nil? end end
↓↓↓↓↓↓↓
class Item < ActiveRecord::Base after_initialize :set_default_value_if_nil private def set_default_value_if_nil self.start_on = DateTime.now.to_date if self.start_on.nil? self.end_on = DateTime.now.to_date + 1.week if self.end_on.nil? end end
ぼーっと眺めると色々発見あっていい。
http://edgeguides.rubyonrails.org/active_record_callbacks.html