Использование помощников маршрутизации в задаче Rake - PullRequest
1 голос
/ 24 мая 2010

У меня есть задача 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, а не из запроса, она не имеет доступа к помощнику. методы. Каков наилучший способ достижения этого?

1 Ответ

1 голос
/ 05 июня 2010

Используете ли вы ActionMailer для доставки сообщений? Кажется, это так. Если это так, вы можете просто выдать токен и заставить Mailer сам отформатировать токен с помощью 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) %>
...