Ruby元编程-使用Before/After回调和aliasu方法对方法进行子类化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby元编程-使用Before/After回调和aliasu方法对方法进行子类化相关的知识,希望对你有一定的参考价值。

  1. require 'rubygems'
  2. require 'active_model'
  3.  
  4. class BaseModel
  5. extend ActiveModel::Callbacks
  6.  
  7. define_model_callbacks :save
  8. before_save { puts "[save:before]"}
  9. after_save { puts "[save:after]"}
  10.  
  11. def do_save; end
  12. def save
  13. _run_save_callbacks do
  14. do_save
  15. end
  16. end
  17. alias_method :superclass_save, :save
  18. end
  19.  
  20. class SomeModel < BaseModel
  21. def save
  22. puts "[saving...]"
  23. true
  24. end
  25. end
  26.  
  27. SomeModel.class_eval do
  28. alias_method :subclass_save, :save
  29. alias_method :do_save, :subclass_save
  30. alias_method :save, :superclass_save
  31. end
  32.  
  33. model = SomeModel.new
  34. model.save

以上是关于Ruby元编程-使用Before/After回调和aliasu方法对方法进行子类化的主要内容,如果未能解决你的问题,请参考以下文章

ruby 在LinkedList上实现了insert_before / after

为啥学习 Ruby 中的元编程和特征类很重要?

:after/::after和:before/::before的区别

:before 和 :after 伪元素可以从父元素继承高度吗?

理解使用before,after伪类实现小三角形气泡框

:before/:after与::before/::after的区别 和属性content:值