[英]Ruby on Rails - undefined local variable or method in rake task
我已經為Mailer創建了一個Rake Task,以便稍后計划Crontab並使用Gem每當時自動執行以向用戶發送電子郵件。 有一小段時間只是測試,以了解任務是否正常運行。
我的耙子任務和郵件程序如下。
require 'rake'
desc 'send digest email'
task send_warn_course: :environment do
MailCourseWarnMailer.course_available(user).deliver!
end
# And my Mailer is:
class MailCourseWarnMailer < ActionMailer::Base
def course_available(user)
@user = user
mail(to: @user.email, subject: "Curso disponível")
end
end
我將參數傳遞給了任務,但這不起作用。 當我運行rake send_warn_course
,出現錯誤:
rake send_warn_course
rake aborted!
NameError: undefined local variable or method `user' for main:Object
有人知道發生了什么嗎? 我在這里想念什么?
由於錯誤提示您沒有User
定義。
您需要輸入電子郵件ID或用戶ID,並需要從數據庫中查找用戶,然后將其傳遞給功能。
類似於以下內容:
require 'rake'
desc 'send digest email'
task :send_warn_course, [:user_email] => :environment do |t, args|
user = User.find_by_email args[:user_email]
MailCourseWarnMailer.course_available(user).deliver!
end
# And my Mailer is:
class MailCourseWarnMailer < ActionMailer::Base
def course_available(user)
@user = user
mail(to: @user.email, subject: "Curso disponível")
end
end
然后,您可以運行以下任務:
rake send_warn_course['user@email.com']
由於這是調度程序任務,因此您可能不想在每個任務中都傳遞變量,而希望執行一些數據庫查詢以找到相關的用戶。 但這只是為了演示錯誤的修復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.