Rails/ActionMailer 中同一文章的两个版本的条件逻辑到 readers/subscribers

Conditional logic in Rails/ActionMailer for two versions of same article to readers/subscribers

用户要么是读者,要么是订阅者。发表新文章时,订阅者会收到一封全文电子邮件,读者会收到一份预告文本。假设模型中的范围为 readers/subscribers,这是正确的还是我需要为每种类型的用户设置另一个条件?

if @article.valid?
  User.subscribers.each do |user|
    ArticleMailer.send_article_full(@article, user).deliver_now
  end
  User.readers.each do |user|
    ArticleMailer.send_article_teaser(@article, user).deliver_now
  end
  redirect_to :root, notice: "Article sent"
else
  render :new, notice: "There was an error"
end

鉴于事实,每个用户都可以是 reader 或订阅者,但不能同时是两者,并且如果您为 readerssubscribers 定义了正确的范围在 User 模型中,那么它应该没问题。您不需要为每种类型的用户设置另一个条件,因为那是多余的。