2

哪个是首选?

class Mailer < ActionMailer::Base

  # this?
  def bid_end_notify_failed_bidders(job)
    @job = job
    bidders = @job.bidders
    bidders.delete(@job.winner)
    bidders.each do |t|
      mail(:to => t.email, ....)
    end
  end

  # or this?
  def notify_failed_bid(bidder)
    mail(:to => bidder ...)
  end


end
4

1 回答 1

0

我建议方法 #2,这是因为您希望在发送电子邮件的方式上保持敏捷。

最常规的使用方式是:

  • 声明一个实例
  • 从实例中声明您需要的任何关系
  • 将实例传递给 Mailer::Base 方法
  • 递送

例子:

用户 = User.first

bets_won = user.bets_won

Mailer.send_congrats(users, bets_won).deliver!

现在它将只使用它所提供的数据,因此 Mailer 类不需要执行任何逻辑,而且这种方法将允许您轻松地重用该方法。

于 2013-02-19T15:52:08.117 回答