2012-10-01 8 views
0

Je ne suis pas habitué à écrire des tâches Rake. Je veux écrire une tâche de rake qui recherche des appels qui sont dans les 30 minutes d'échéance et l'exécution d'un mailer. Ci-dessous le code que j'utiliserais du contrôleur, comment puis-je l'adapter à ma tâche?Rails Rake Tâche Email Notifier

@call = Call.find(params[:id]) 
if Time.zone.now < @call.transfer_date + 30.minutes 
    @call.units.each do |unit| 
     CallMailer.cancel_call(unit.incharge, @call).deliver 
     CallMailer.cancel_call(unit.attendant, @call).deliver 
    end 
end 

Toute aide est appréciée.

Répondre

0
namespace :send_due_emails do 
    desc "" #task describtion 
    task :send_due_emails_task => :environment do 
    send_emails 
    end 

    def send_emails 
    @call = Call.find(params[:id]) 
    if Time.zone.now < @call.transfer_date + 30.minutes 
     @call.units.each do |unit| 
     CallMailer.cancel_call(unit.incharge, @call).deliver 
     CallMailer.cancel_call(unit.attendant, @call).deliver 
     end 
    end 
    end 
end 

http://railscasts.com/episodes/66-custom-rake-tasks

http://jasonseifer.com/2010/04/06/rake-tutorial

+0

j'ai couru send_due_emails rake: send_due_emails_task et obtenu ce retour: variable locale non définie ou méthode 'params' pour principal: Object doit-je ne pas utiliser les variables d'instance? – nulltek

+0

Oh oui. params n'est pas disponible dans la tâche rake. –

Questions connexes