2010-05-24 2 views
1

J'ai une tâche de râteau qui envoie les prochaines invitations « x » à se joindre à une version bêta, il utilise ce code:L'utilisation des aides de routage dans une tâche 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 

Je dois passer dans le « register_url » à l'expéditeur pour que le lien apparaisse dans l'email, mais puisque ceci court d'une tâche de rake et pas d'une demande il n'a pas un accès aux méthodes d'aide. Quel est le meilleur moyen d'y parvenir?

Répondre

1

Utilisez-vous un ActionMailer pour envoyer les messages? Cela semble être ça. Si c'est le cas, vous pouvez simplement passer le jeton et demander au Mailer lui-même de formater le jeton en utilisant register_url. Alors vous feriez:

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

puis dans votre invitation modèle que vous utilisez simplement

<%= register_url(i.token) %> 
Questions connexes