【发布时间】:2011-04-12 18:46:25
【问题描述】:
我收到以下错误:
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”类是什么样的?
-
ContactEmail 类是如上所述新建的,模型如下所示: # Table name: contact_emails # # id :integer not null, primary key # contact_id :integer # email_id :integer # status : string(255) # subject :string(255) # body :text # date_created :date # date_sent :datetime # created_at :datetime # updated_at :datetime # sugarcrm :boolean default(FALSE)
标签: ruby-on-rails methods object cron delayed-job