1

我有一个 rake 任务,它发出下一个“x”邀请加入测试版,它使用以下代码:

desc "This will send out the next batch of invites for the beta"
task :send_invites => :environment do
  limit = ENV['limit']
  c = 0
  invitation = Invitation.all(:conditions => { :sent_at => nil, :sender_id => nil }, :limit => limit).each do |i|
    Mailer.deliver_invitation(i, register_url(i.token))
    c.increment!
  end

  puts "Sent #{c} invitations."
end

我需要将“register_url”传递给邮件程序,以便链接显示在电子邮件中,但由于这是从 rake 任务而不是从请求中运行的,因此它无法访问辅助方法。实现这一目标的最佳方法是什么?

4

1 回答 1

1

您是否使用 ActionMailer 来传递消息?好像是这样。如果是这样,您可以传递令牌并让邮件程序本身使用 register_url 格式化令牌。所以你会这样做:

invitation = Invitation.all(:conditions => { :sent_at => nil, :sender_id => nil }, :limit => limit).each do |i|
    Mailer.deliver_invitation(i)
    c.increment!
end

然后在您的邀请模板中,您只需使用

<%= register_url(i.token) %>
于 2010-06-05T17:10:38.650 回答