将自定义参数传递给 rails 事件模型回调?
Pass custom argument to rails event model callbacks?
非常简单的问题,但无法弄清楚。
是否可以这样做:
after_create :log_activity(my_var)
所以我可以编写 1 个方法来处理所有操作(销毁、保存、更新)?
不,无法将变量传递给回调方法。原因很简单,回调方法是由rails栈调用的,当它调用回调方法时,它不知道在回调方法中传递什么。
如果我理解正确的话,在我的实践中是在创建或销毁薪水时更新用户余额的情况。所以试试这个代码:
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
希望对您有所帮助! :)
你可以这样做:
after_create Proc.new{ log_activity(my_var) }
def log_activity(my_var)
:
end
我不确定这是否是 Rails 4.2 中的新内容与您提出问题时的新内容,但这有效:
after_create -> { log_activity(my_var) }
我想知道您真正要问的问题是否与 my_var
的范围有关。 my_var 你的意图是什么?
非常简单的问题,但无法弄清楚。 是否可以这样做:
after_create :log_activity(my_var)
所以我可以编写 1 个方法来处理所有操作(销毁、保存、更新)?
不,无法将变量传递给回调方法。原因很简单,回调方法是由rails栈调用的,当它调用回调方法时,它不知道在回调方法中传递什么。
如果我理解正确的话,在我的实践中是在创建或销毁薪水时更新用户余额的情况。所以试试这个代码:
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
希望对您有所帮助! :)
你可以这样做:
after_create Proc.new{ log_activity(my_var) }
def log_activity(my_var)
:
end
我不确定这是否是 Rails 4.2 中的新内容与您提出问题时的新内容,但这有效:
after_create -> { log_activity(my_var) }
我想知道您真正要问的问题是否与 my_var
的范围有关。 my_var 你的意图是什么?