回调 - after_save但不创建

时间:2011-04-23 20:02:10

标签: ruby-on-rails ruby-on-rails-3

如何将回调分开,以便after_create运行一组代码,但!after_create可以说是另一组代码?

3 个答案:

答案 0 :(得分:25)

after_create回调新对象,after_update为持久化对象。

答案 1 :(得分:3)

after_create创建新对象后

after_update现有对象更新后

after_save创建和更新

答案 2 :(得分:2)

您可以拥有多个仅基于条件执行的回调

<强> model.rb

after_create :only_do_if_this
after_create :only_do_if_that

def only_do_if_this
  if do_this?
    # code...
  end
end

def only_do_if_that
  if do_that?
    # code...
  end
end

您还可以将条件添加到回调本身

after_create :only_do_if_this, :if => proc { |m| m.do_this? }
after_create :only_do_if_that, :if => proc { |m| m.do_that? }

def only_do_if_this
  # code ...
end

def only_do_if_that
  # code...
end