代码之家  ›  专栏  ›  技术社区  ›  Nick Vanderbilt

如何在运行时创建after_save回调

  •  0
  • Nick Vanderbilt  · 技术社区  · 15 年前

    我正在使用RubyonRails2.3.5。

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

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

    我想要的是这样的东西。这是psuedo代码。

    user=用户.first

    proc=proc.new do程序 把“这是福” 结束

    用户.after_保存过程

    2 回复  |  直到 14 年前
        1
  •  0
  •   vise    15 年前

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

    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" }
    
        2
  •  0
  •   GregMoreno    14 年前
    @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