如何从rake任务中调用控制器动作?

7
我有一个控制器动作,可以生成一些 Excel 报告,这大约需要 10 分钟的时间。有时我会从我的 Web 应用程序中调用它,这就是为什么它是一个动作的原因。
但是我也想创建一个 Rake 任务来运行它,这样我就可以自动安排每晚运行一次。
有什么方法可以做到这一点吗?

正如其他人所说,您必须将代码移到模型中。在控制器上完成操作是一种不好的做法。 - kikito
2个回答

3

你能处理从你的模型生成报告吗?模型应该承担大部分工作,并且可以从Rake任务中访问:

task :reports => :environment do
  ...
  # Do stuff with your models.
end

1
我不这么认为,我需要渲染XML模板以生成Excel报告。 - Janak

3

我认为您需要将代码移至模型中。由于在模型中放置有关输出呈现的知识是不好的,因此建议将所有业务逻辑和数据操作放在模型中,然后将呈现代码放在rake任务中。这将使rake任务类似于Web上使用的控制器-维护关注点的分离。

您可以查看ActionView :: Base并从那里开始工作,以找出如何触发模板的呈现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接