Rails actionmailer 中定义的是实例方法,调用是类方法,为什么?

chenge · 2013年01月21日 · 最后由 chenge 回复于 2013年01月23日 · 2403 次阅读
class MyMailer <ActionMailer::Base
  def confirm(email)
        @message = "Thank you for confirmation!"
        mail(:to => email, :subject => "Registered")  
  end  
end

调用: MyMailer.confirm('[email protected]').deliver

定义的是实例方法,调用是类方法,为什么?

是因为用到了 Ruby 的 method_missing 方法,对 ActionMailer::Base 这个对象 (注意不是实例) 添加了 method_missing 方法,然后做了初始化一个实例 Mailer , 寻找实例方法,render 等等...

这些需要弄懂 ruby 的元编程再来看可能会好一点.

#1 楼 @wppurking 谢谢你的回答。只是觉得是没必要的绕弯子设计。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号