【问题标题】:In a Rails MVC project, where should post-query data transforms take place? Model or Controller?在 Rails MVC 项目中,查询后数据转换应该在哪里进行?模型还是控制器?
【发布时间】:2020-05-10 19:54:56
【问题描述】:

这是场景...

视图需要以非常特定的格式/方式将数据传递给它(以便很好地适应第三方图表 API)。当从数据库中提取数据时,必须对其进行转换才能满足 View 的需求。

根据 MVC 的原则,应该在哪里进行这种数据转换?

选项:

  • 我可以要求控制器中的操作方法从数据库中提取数据并对其进行转换,然后再将其传递给视图。或者...
  • 我可以改为在模型中创建一个方法来提取和转换数据,然后再将其传递给控制器​​(控制器然后将其传递给视图)。

我选择将所有这些都放在 Model 方法中,如下所示:

def self.rating_chart_data
  Film.group(:rating).count.transform_keys{ |key|
    key == 1 ? (key.to_s + " Star") : (key.to_s + " Stars")}
end

不过,我对这个决定并不是很有信心。想法?

【问题讨论】:

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


    【解决方案1】:

    控制器负责处理传入的请求并将处理后的数据传输到视图。所有数据处理都必须在模型级别完成。 如果你发现你的模型随着时间的推移而变胖,或者如果有一个可重用的代码组件可以在整个应用程序中使用,那么该代码需要放在模块/关注点/服务中。 但是,也有一些视图助手旨在消除视图中的混乱并返回已处理的数据。

    这里有一个useful article,它将帮助您了解如何组织代码结构并正确遵循 MVC 模式。 希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-07-31
      • 2018-02-02
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 2015-09-06
      • 2014-12-03
      • 2012-02-09
      相关资源
      最近更新 更多