gpt4 book ai didi

ruby-on-rails - 定义为实例方法的类方法

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:53 24 4
gpt4 key购买 nike

这是 Michael Hartle 书中的工作代码。这是 app/mailers/user_mailer.rb 中的邮件程序代码,用于为用户帐户创建激活邮件:

class UserMailer < ActionMailer::Base
def account_activation(user)
@user = user
mail to: user.email, subject: "Account activation"
end
end

邮件的预览是使用 test/mailers/previews/user_mailer_preview.rb 中的 ruby​​ 文件生成的:

class UserMailerPreview < ActionMailer::Preview
def account_activation
user = User.first
user.activation_token = User.new_token
UserMailer.account_activation(user)
end
end

account_activation 方法在user_mailer.rb 中定义为实例方法。但它在预览生成器中用作类方法。是我误解了代码还是这里发生了其他事情?

有同样疑问的 friend

这就是 ActionMailer 的工作原理。电子邮件在扩展 ActionMailer::Base 的类中被定义为实例方法,但您可以将它们作为类方法访问。

最佳答案

ActionMailer 就是这样工作的。电子邮件在扩展 ActionMailer::Base 的类中被定义为实例方法,但您可以将它们作为类方法访问。

class MyMailer < ActionMailer::Base
def my_email
end
end

MyMailer.my_email
# and not MyMailer.new.my_email

这是一个快捷方式,它将实例化 ActionMailer 类的实例,调用相应的电子邮件方法并返回电子邮件消息。这是 the code that handles the call .

关于ruby-on-rails - 定义为实例方法的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31054154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com