如何在运行时创建after_save回调

时间:2010-05-10 17:55:49

标签: ruby-on-rails

我在rails 2.3.5上使用ruby。

我有用户实例。在运行时取决于某些条件,我想为此实例添加一个after_save回调。

另一个问题是这个after_save应该以块或proc作为参数。

我想要的是这样的。这是伪代码。

user = User.first

proc = Proc.new做  把'这是foo' 端

user.after_save proc

2 个答案:

答案 0 :(得分:0)

我就是这样做的。在模型中我会:

attr_accessor :after_save_callback

after_save { |record|
  record.after_save_callback.call unless record.after_save_callback.nil?
}

虽然绑定事件可能类似于:

user = User.first
user.after_save_callback = Proc.new { "actual code" }

答案 1 :(得分:0)

@user = User.first

eigen = class << @user; self; end
eigen.after_save do
  puts @user.email
end

@user.save
# prints user.email


@another = User.find(100)
@another.save
# does not print user.email