ruby-on-rails - Rails 5 - 防止电子邮件发送给未订阅用户的最佳方法
问题描述
我正在使用 Rails 5。
我有一个Affiliate
带有布尔属性的模型email_notifications_on
。
我正在为会员建立一个非常强大的电子邮件滴灌系统,但无法弄清楚在发送电子邮件之前检查会员是否有电子邮件通知的最佳位置。
我的大部分电子邮件都是从 Resque BG 工作发送的,还有一些是从控制器发送的。
这是我如何检查 BG 作业的订阅状态的示例:
class NewAffiliateLinkEmailer
@queue = :email_queue
def self.perform(aff_id)
affiliate = Affiliate.find(aff_id)
if affiliate.email_notifications_on?
AffiliateMailer.send_links(affiliate).deliver_now
end
end
end
似乎if affiliate.email_notifications_on?
在 10 多个领域写作并不是正确的方法,特别是如果我将来需要满足另一个条件。或者这样好吗?
我认为也许某种回调AffiliteMailer
会起作用,但看到很多人建议不要在 Mailer 中使用业务逻辑。
任何想法/建议将不胜感激。
解决方案
老实说,我认为没有比在Affiliate
模型中创建方法更好的方法了,如下所示,
def should_send_email?
# all business logic come here
# to start with you will just have following
# email_notifications_on?
# later you can add `&&` or any business logic for more conditions
end
您可以使用此方法代替属性。它更具可重用性和可扩展性。您仍然必须在每次调用中使用该方法。如果您喜欢单衬里,那么您可以使用 lambda。
推荐阅读
- arcgis - 根据 ArcGIS Online Experience Builder 中所选项目的属性表值更改 Image Widget 图片
- android - 房间迁移问题
- amazon-web-services - AWS Fargate“memoryReservation”——为什么?
- python - 如何在python中拆分整数-字符对
- autodesk-forge - 数据管理 API 存储桶使用成本/限制
- java - java.lang.UnsupportedClassVersionError-aparajita
- javascript - 参加考试的最大学生人数 Javascript
- sql-server - 如何将用户角色更新为我拥有 3 次具有不同用户角色的用户
- python - 如何在 groupby 的多个列上使用应用函数?
- python - Python中的多元K均值聚类?