首页 > 解决方案 > 在 Rails MVC 项目中,查询后数据转换应该在哪里进行?模型还是控制器?

问题描述

这是场景...

视图需要以非常特定的格式/方式将数据传递给它(以便很好地适应第三方图表 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-railsmodel-view-controller

解决方案


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

这是一篇有用的文章,可帮助您了解如何组织代码结构并正确遵循 MVC 模式。希望有帮助。


推荐阅读