gpt4 book ai didi

ruby-on-rails - ActionMailer 最佳实践 : Call method in the model or the controller?

转载 作者:数据小太阳 更新时间:2023-10-29 06:30:18 24 4
gpt4 key购买 nike

发送电子邮件通常在对模型执行操作后调用,但电子邮件本身是一个 View 操作。我正在寻找您如何考虑要问自己什么问题来确定将操作邮件程序方法调用放在何处。

我见过/使用过它们:

  • 在模型方法中 - 相关但独立的关注点的耦合不良?
  • 在模型的回调中(例如 after_save)- 就我目前的知识水平而言,最好的分离。
  • 在 Controller 操作中 - 只是感觉不对,但在某些情况下这是构建代码的最明智的方式吗?

如果我想知道如何编程,我需要像程序员一样思考,因此学习如何思考特定的编程解决方案值得我独自编码数月。谢谢!

最佳答案

迟到的答案,但我想在这个问题上合理化:

通常,在网络应用程序中,您希望发送电子邮件作为对客户的直接 react 。或者作为后台任务,以防我们谈论时事通讯/通知邮件之类的事情。

该模型基本上是一个数据存储映射器。它的逻辑应该封装数据处理/通信与数据存储处理。因此,插入与其无关的逻辑有点棘手,而且在大多数情况下是错误的。让我们举个例子:用户注册了一个账户,应该会收到一封确认邮件。在这种情况下,可以说确认电子邮件是创建新帐户的直接影响。现在,不要在 Web 应用程序中执行此操作,而是尝试在控制台中创建一个用户。在这种情况下触发回调听起来是错误的,对吧?因此,回调选项被划伤。我们还应该把方法写在模型中吗?好吧,如果它是用户操作/输入的直接影响,那么它应该保留在该工作流程中。成功创建用户后,我会在 Controller 中写入它。直接地。在 Controller 中调用的模型中复制此逻辑无论如何都会增加不必要的模块化,以及 Action Mailer 对 Active Record 模型的依赖性。尝试考虑在许多应用程序上共享模型,其中一些应用程序不需要 Action Mailer。出于上述原因,我认为邮件程序调用应该在它们有意义的地方进行,通常模型在那个地方。试着给我举个例子。

关于ruby-on-rails - ActionMailer 最佳实践 : Call method in the model or the controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/508587/

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