我有一个after_initialize方法,如果我没有更新记录,我只想调用它。例如,类似以下内容:
after_initialize :set_some_name, :unless => :updating?
例如,Task.find(123).title
应调用after_initialize
方法。 Task.find(123).save!(:title => "something")
应该不调用after_initialize
方法。
当然是“更新?” Rails中不存在方法。是否有相同的方法或方法?
答案 0 :(得分:7)
我认为你正在寻找这种方法:
http://apidock.com/rails/ActiveRecord/Base/new_record%3F
在after_initialize函数中,您可以在进行治疗之前检查记录是否已保存。
也许
after_initialize :set_some_name, if: :new_record?
答案 1 :(得分:1)
我这样解决了它:)
after_initialize :set_alternative_title, :unless => :name_is_alternative_title?
def set_alternative_title
self.title = "Alternative title"
end
def name_is_alternative_title?
self.title == "Alternative title"
end