【问题标题】:Should i define exporting in a model or a controller?我应该在模型还是控制器中定义导出?
【发布时间】:2011-05-04 19:12:12
【问题描述】:

我有一个需要导出数据的 Rails 应用程序。数据导出是一项复杂的操作,它创建一个包含来自各种模型的信息的外部数据库。我目前将数据导出例程编写为单独的 rake 任务,现在我也想将它们公开给用户。

我不知道是否要创建一个包含所有导出逻辑的模型,所以本质上该模型将代表一个单独的导出实例,或者我应该将例程创建为辅助库并直接从一个控制器,这在某种程度上也很有意义。

【问题讨论】:

    标签: ruby-on-rails model-view-controller


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好点。我什至没有考虑将视图作为替代方案,但它也是有意义的。再说一遍,这将是一个沉重的视图,其中包含相当多的逻辑,这并不真正适合 MVC 模型。
    • @Ressu,您不必将逻辑嵌入到视图本身中。视图应该只调用存储在其他地方的逻辑——就像它一直做的那样。
    • 这样会更合适。所以正确的解决方案是在这里使用答案的组合。创建模块或类以方便导出并使用视图将其呈现给用户。谢谢。
    【解决方案2】:

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

    仅当您要将导出请求存储在数据库中时,将其放入模型中才有意义。

    【讨论】:

    • 一个模块或一个类比模型更适合,你是对的。它还可以使控制器保持整洁。
    猜你喜欢
    • 2017-11-02
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多