我应该在模型或控制器中定义导出吗?

问题描述:

我有一个需要导出数据的Rails应用程序。数据导出是一项复杂的操作,可创建包含各种模型信息的外部数据库。我现在将数据导出例程作为单独的rake任务编写,现在我想将它们公开给用户。我应该在模型或控制器中定义导出吗?

我想不通的是,是否创建一个包含所有的逻辑出口的模型,所以基本模型将是一个单一出口的实例或者我应该直接创建程序作为一个辅助库和使用从一个控制器,这也是有道理的。

基本上,“导出”只是创建另一种访问数据的方式。

什么管理访问和表示数据的方式是视图。所以你应该创建另一个视图,而不是模型或控制器。

您将创建的视图当然会调用某种导出功能。导出函数将数据模型作为输入并以“导出”的形式返回数据。这可以是模型对象中的方法(“导出我”),也可以是位于lib/文件夹中的脚本中的单独函数。

但是,当您执行此导出功能时,可能希望使用其他数据模型(例如,以缓存导出的数据)。但这是导出函数的实现细节,可能根本不需要。

+0

好点。我甚至没有把这个观点看作是一种选择,但它也是有道理的。然后,这将是一个沉重的观点,其中有相当多的逻辑,它并不真正适合MVC模型。 – Ressu 2011-05-04 19:29:36

+0

@Ressu,您不必将逻辑嵌入视图本身。视图应该只是调用其他地方存储的逻辑 - 就像它总是这样。 – 2011-05-04 22:05:00

+0

这会让它更适合。所以正确的解决方案是在这里结合使用答案。创建一个模块或类以方便导出并使用视图将其呈现给用户。谢谢。 – Ressu 2011-05-05 07:53:42

在我看来,你应该创建一个模块或类(以更适合您的导出实现为准),并从控制器调用它。对我来说,好像用户正在发出请求,控制器然后将该请求引导到外部库来完成它,然后可以向控制器报告它已完成,并且控制器可以通知视图。

如果你打算在数据库中存储导出请求,那么把它放在模型中只对我有意义。

+0

模块或类比模型更适合,你是对的。它也可以保持控制器整洁。 – Ressu 2011-05-04 19:31:43