在Rails中发送邮件时,通常会这样做:
UserMailer.password_reset(user).deliver
但是如果我们查看UserMailer
的内部,会发现这样的代码:
def password_reset(user) # not self.password_reset
# ...
end
注意方法名称没有以self
作为前缀。看起来,你需要先实例化对象如下所示。Rails是如何做到这一点的呢?
注意方法名称没有以self
作为前缀。看起来,你需要先实例化对象如下所示。Rails是如何做到这一点的呢?
UserMailer.new.password_reset(user).deliver
UserMailer.password_reset(user).deliver
不变,但将def method
更改为def self.method
。 - deedeliver
已在ActionMailer模块中定义为类方法,请参见我的回答。 - Anand Shah