将对象从application_rake发送到模型

时间:2014-08-26 15:04:04

标签: ruby-on-rails

我在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传递对象是否有问题?

1 个答案:

答案 0 :(得分:0)

通过方法调用传递对象肯定不会有问题 - 即使是来自rake任务。

如果family.name声明实际上是失败的话,我希望你会看到更像这样的信息:

undefined method :name for #<Family> 

所以听起来你可能正在查看错误的代码行(即它可能是代码中其他内容的错误)。缺少属性错误听起来更像是质量分配问题。

您是否尝试使用--trace选项运行rake任务?

rake the_task --trace

这可能有助于确定问题,无论哪种方式。