2016-01-14 4 views
0

Моя задача будет сделать следующее:Как использовать помощников в грабли?

  • Проверьте, если пользователь вошел в систему, и уведомить его в качестве администратора

    • Если это правда => ничего не делать

    • Если ложь => отправить электронное письмо администратору

Я хочу, чтобы эта задача будет выполняться каждый час (это будет планироваться с Heroku планировщиком дополнения)

Проблема здесь состоит в том, что вы не можете использовать user_signed_in? или current_user в любом граблей файле вы пишете. Кроме того, я не могу передать ни одно из этих значений в качестве параметров, потому что оно будет вызываться из планировщика Heroku, панели инструментов.

Некоторые из моего кода здесь:

Библиотека/задач/scheduler.rake

task :send_notification => :environment do 
    if user_signed_in? 
    puts "No need to email" 
    else 
    puts "Sending email" 
    u=User.find(132) #get an admin user 
    ModelMailer.time_notification(u).deliver 
    end 
end 

Ошибка:

rake aborted! 
NoMethodError: undefined method `user_signed_in?' for main:Object 

Заранее спасибо!

ответ

1

Утилита в своей конфигурации по умолчанию не позволяет отслеживать, какие пользователи находятся в сети и в автономном режиме. Помощники current_user и user_signed_in? относятся к текущему сеансу и действительны только во время запроса пользователя. Поскольку запрос в грабли не существует, они не являются полезными.

Вы можете добавить столбец в свою базу данных, чтобы отслеживать, вошли ли пользователи в систему или не вошли в систему, но эту функциональность нет в разработке.