Использование помощников маршрутизации в задаче Rake

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


person trobrock    schedule 24.05.2010    source источник


Ответы (1)


Используете ли вы 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) %>
person christophercotton    schedule 05.06.2010