你怎么能跳过" after_initialize"更新记录的方法?

时间:2014-03-27 16:54:31

标签: ruby-on-rails ruby activerecord

我有一个after_initialize方法,如果我没有更新记录,我只想调用它。例如,类似以下内容:

after_initialize :set_some_name, :unless => :updating?

例如,Task.find(123).title应调用after_initialize方法。 Task.find(123).save!(:title => "something")应该调用after_initialize方法。

当然是“更新?” Rails中不存在方法。是否有相同的方法或方法?

2 个答案:

答案 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