Ruby on rails ApplicationMailer约定-在邮件程序中传递数据与查找
我注意到ApplicationMailer的公认约定是将内部逻辑保持在最低限度,并将所需数据传递到mailer方法本身,而不是在mailer方法内部查找数据(ActiveRecord记录)。我还没有找到一个解释,为什么这是首选,但谁能解释为什么这是一个趋势 例如:Ruby on rails ApplicationMailer约定-在邮件程序中传递数据与查找,ruby-on-rails,actionmailer,Ruby On Rails,Actionmailer,我注意到ApplicationMailer的公认约定是将内部逻辑保持在最低限度,并将所需数据传递到mailer方法本身,而不是在mailer方法内部查找数据(ActiveRecord记录)。我还没有找到一个解释,为什么这是首选,但谁能解释为什么这是一个趋势 例如: class FooMailer < ApplicationMailer # OK def foo_email(recipient, widget) @widget = widget mail(to: re
class FooMailer < ApplicationMailer
# OK
def foo_email(recipient, widget)
@widget = widget
mail(to: recipient, from: 'foo@bar.com', subject: 'Your widget')
end
######
# VS #
######
# Not OK
def foo_email(recipient)
@widget = Widget.first
mail(to: recipient, from: 'foo@bar.com', subject: 'Your widget')
end
end
class FooMailer
谢谢大家! 一个字(好的,三个):
在前一个示例中,ApplicationMailer
不需要了解有关您的模型的任何信息。而且,它不包含任何与选择小部件相关的业务逻辑
在后一个示例中,ActionMailer
需要(1)了解有关您的模型的一些信息(有一个叫做Widget
)和(2)包含业务逻辑(Widget.first
) 我觉得这就是原因。谢谢你的确认!