Rails 如何覆盖类已经存在的方法?

chucai · January 06, 2013 · Last by doitian replied at January 06, 2013 · 3928 hits

假设我有两个 module A 和 B

module A
   include B
   def a
      # some code
       b
   end
end

module B
  def b
     #method b code...
   end
end

现在,我想动态修改 module A 的 a 方法,有什么好的办法么? 我有一个不好的方案。打一个"猴子补丁"

module A
  def a
    #method a code
    b
  end 

  def b
    #method b code 
  end
end

有更优美的解决方案么?

没看明白..

def a
  ... # 静态的逻辑
  yield
  ... # 静态的逻辑
end
a{ 动态的逻辑 }
A.send :alias_method, :old_a, :a # or A.send :undef_method, :a
A.send :define_method, :a, proc {p "d"}

传说中的 X-Y question 吗?

You need to Sign in before reply, if you don't have an account, please Sign up first.