我在application_rake中有一个任务。重要的是:
family = Family.find(114)
SysMailer.deliver_feedback_memo(emails_str,"escorter", family)
在SysMailer模型中,我尝试写下这样的家族名称:
puts family.name
name是family的一个属性(肯定是!!!)
但是当我跑步时:
rake the_task
我收到错误:
rake aborted!
missing attribute: name
为什么呢?将对象从rake发送到模型是否有问题?
更新
在努力解决问题后,我尝试不传递对象,但只将family.id传递给模型,如下所示:
SysMailer.deliver_feedback_memo(emails_str,"escorter", **family.id**)
(星号只是为了显示变化)。
然后在模型中我创建了一个采用这个参数的方法:
def some_method(emails, type, **family_id**)
family = Family.find(family_id)
puts family.name
它有效。
所以我的问题仍然存在。使用rake传递对象是否有问题?
答案 0 :(得分:0)
通过方法调用传递对象肯定不会有问题 - 即使是来自rake任务。
如果family.name
声明实际上是失败的话,我希望你会看到更像这样的信息:
undefined method :name for #<Family>
所以听起来你可能正在查看错误的代码行(即它可能是代码中其他内容的错误)。缺少属性错误听起来更像是质量分配问题。
您是否尝试使用--trace
选项运行rake任务?
rake the_task --trace
这可能有助于确定问题,无论哪种方式。