1

このコードを使用してベータに参加するための次の「x」招待を送信するrakeタスクがあります。

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 に答える