2017-08-03 3 views
1

48時間以内にアクティベーションメールをアクティブにしないと、アクティベーションメールをユーザーに再送信したいと思います。私はいつでも宝石を使用しましたが、電子メールを送信していません。アクションメーラーは正常に動作してたときに、ユーザーがサインアップ schedule.rb宝石がメールを送信していないときはいつでも

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私は48時間のクエリを変更した:nは私の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 

答えて

0

は、私はそれがこの

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 

ノートのようなものになります、それはuser.resend_account_activation

すべきではないと思います。 plsは実行私はこのクエリについて確認していない

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

前に確認してください。 'User.where( 'activated =?'、false && 'activated_at <?'、48.hours.ago)' –

関連する問題