2017-08-03 3 views
1

Je souhaite renvoyer un e-mail d'activation aux utilisateurs s'ils ne l'ont pas activé dans les 48 heures. J'ai utilisé chaque fois que la gemme mais il n'envoie pas l'email. même si l'action mailer fonctionne très bien et envoie un e-mail lorsqu'un utilisateur se inscrit schedule.rbChaque fois que la gemme n'envoie pas d'e-mail

set :environment, :development 
     every 1.minutes do 
     runner "user.resend_account_activation" 
    end 

user_mailer.rb

def resend_account_activation 
    @user = User.where('activated = ?',false && 'activated_at < ?',48.hours.ago) 

    mail to: @user.email, subject: "You forgot to activate" 
    end 

user.rb

def resend_account_activation 
     # @outdated_users = User.where('activated_at < ?',30.seconds.ago) 
     UserMailer.resend_account_activation.deliver_now! 

    end 

I n mes cmd

# Begin Whenever generated tasks for: store 
* * * * * /bin/bash -l -c 'cd /mnt/c/Sites/testApp && bin/rails runner -e production '\''user.resend_account_activation'\''' 

# End Whenever generated tasks for: store 

Répondre

0

je pense qu'il ne devrait pas être user.resend_account_activation

Ce sera quelque chose comme ça

user.rb

def self.resend_account_activation_to_users 
    User.where('activated = ? AND activated_at < ?', false ,48.hours.ago).each do |user| 
    UserMailer.resend_account_activation(user.id).deliver_now! 
    end 
end 

Note: J'ai changé la requête 48 heures. pls vérifier avant l'exécution

user_mailer.rb

def resend_account_activation(user_id) 
    @user = User.find(user_id) 
    mail to: @user.email, subject: "You forgot to activate" 
end 

runner "User.resend_account_activation" # Note: changed user => User

+0

Je ne suis pas sûr au sujet de cette requête. 'User.where ('activé =?', False && 'activé_at