是否将自定义参数传递给rails事件模型回调



这个问题很简单,但无法解决。可以这样做吗:

after_create    :log_activity(my_var)

所以我可以写一个方法来处理所有操作(销毁、保存、更新)?

否,不可能将变量传递给回调方法。原因很简单,因为回调方法是由rails堆栈调用的,当它调用回调方法时,它不知道在回调方法中传递什么。

您可以这样做:

after_create Proc.new{ log_activity(my_var) }
def log_activity(my_var)
:
end

我不确定这在Rails4.2中是否是新的,而当你问这个问题时,这个问题被问到了,但这是有效的:

after_create -> { log_activity(my_var) }

我想知道你真正想问的问题是否是关于my_var的范围。你对my_var的意图是什么?

如果我能正确理解你,那么在我的实践中,更新用户的创建或销毁工资余额是一种情况。所以试试这个代码:

class Salary < ActiveRecord::Base
after_create  { |action| action.update_user_balance(1) }
before_destroy { |action| action.update_user_balance(-1) }
def update_user_balance(val) #val can be +1/-1
user = self.user
user.update(balance: user.balance + self.sum * val)
end

希望这对你有帮助!:)

最新更新