我收到以下錯誤:如何在rails上調試ruby中的'no method'錯誤?
Delayed::Job SomeMailJob# (NoMethodError) "undefined method `subject' for #<YAML::Object:0x2b0a191f4c78>"
這來自於以下幾個代碼引用上面的SombMailJob:
class SomeMailJob < Struct.new(:contact, :contact_email)
def perform
OutboundMailer.deliver_campaign_email(contact,contact_email)
end
end
這裏是郵件:
class OutboundMailer < Postage::Mailer
def campaign_email(contact,email)
subject email.subject
recipients contact.email
from 'me.com>'
sent_on Date.today
body :email => email
end
這是cron的調用郵件程序的任務:
Contact.all.each do |contact|
email = contact.email_today #email_today is a contact method returning email object if <= today
unless contact.email_today == "none" || email.nil?
puts "contact info inside cron job"
puts contact.first_name
puts email.days
puts contact.date_entered
puts contact.colleagues
puts "substituted subject:"
puts email.substituted_subject(contact,contact.colleagues)
# create the Contact Email object that gets created and sent
contact_email = ContactEmail.new
contact_email.contact_id = contact.id
contact_email.email_id = email.id
contact_email.subject = email.substituted_subject(contact,contact.colleagues)
puts contact_email.subject
contact_email.date_sent = Date.today
contact_email.date_created = Date.today
contact_email.body = email.substituted_message(contact, contact.colleagues)
contact_email.status = "sent"
#Delayed::Job.enqueue OutboundMailer.deliver_campaign_email(contact,contact_email)
Delayed::Job.enqueue SomeMailJob.new(contact,contact_email)
contact_email.save #now save the record
問題:爲什麼我得到這個錯誤?我甚至不知道對象是什麼,因爲它提供了代碼,所以我不能進一步深入調試。
你的'ContactEmail'類是什麼樣的?如上所述新創建 – Codebeef 2010-09-15 16:07:20
的ContactEmail類和模型看起來像這樣:#表名:contact_emails # #標識:整數不爲空,主鍵 #CONTACT_ID:整數 #EMAIL_ID:整數 #狀態:字符串( 255) #主題:字符串(255) #體:文字 #DATE_CREATED:日期 #DATE_SENT:日期時間 #created_at:日期時間 #的updated_at:日期時間 #SugarCRM的:布爾默認值(FALSE) – Angela 2010-09-16 00:49:16