大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 如何保存模型,而不在Rails中运行回调,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
before_save :calculate_averages
然而,偶尔(最初我有10k个记录需要这个操作),我需要手动更新每个记录的所有平均值.没问题,我有如下代码:
Survey.all.each do |survey| survey.some_average = (survey.some_value + survey.some_other_value) / 2.to_f #and some more averages... survey.save! end
甚至在运行这段代码之前,我担心calculate_average会被调用并复制,甚至可能会导致一些问题.好的,那么我觉得好,我什么也不做,让__计数器得到调用并做它的事情.问题在于,首先,即使您没有对记录进行任何更改,是否有一种强制回调的方法?
其次,平均值的计算方法是更有效率,根本不要让回调被调用,并且一次性完成所有的平均值.这可能不会让回调被调用吗?
ActiveSupport::Callbacks
实现.看看set_callBACk和skip_callBACk.
为了“强制回调函数调用,即使您没有更改记录”,您需要注册一些事件的回调,例如保存,验证等.
set_callBACk :save,:before,:my_before_save_callBACk
要跳过before_save回调,您可以:
Survey.skip_callBACk(:save,:calculate_averagE).
请参考链接的ActiveSupport::Callbacks
在其他支持的选项,如条件和块,set_callBACk和skip_callBACk.
以上是大佬教程为你收集整理的ruby-on-rails – 如何保存模型,而不在Rails中运行回调全部内容,希望文章能够帮你解决ruby-on-rails – 如何保存模型,而不在Rails中运行回调所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。