1

我对 Rails 很陌生,我开始学习 MVC 框架和 RESTful 架构背后的概念。一个对我来说一直是灰色地带的问题是,后处理数据背后的逻辑可能最好由模型、视图还是控制器来处理?直觉上,它属于控制器对我来说是有意义的,但我不确定什么被认为是最佳实践。例如,如果我有一个资源学生,并且我想通过将他们的总分相加并除以可能的总分来显示他们的最终成绩,我应该在哪里计算?如果我想计算班级平均值怎么办?还是他们的 GPA?

4

2 回答 2

0

我倾向于遵循 Fat Model Skinny Controller 的口头禅。计算值应该是模型中的方法。您应该使用实例方法来计算单个学生的成绩,并使用班级方法来计算全班平均成绩。

Class Student < ActiveRecord::Base

  POSSIBLE_POINTS = 100

  def grade
     points / POSSIBLE_POINTS
  end

  def self.class_averags
    students = all #or use where to filter results
    total = students.inject(0){ |total, student| total + student.grade }
    total / students.size
  end

end

希望这可以帮助。

于 2012-10-08T20:15:07.487 回答
0

由于模型处理所有业务逻辑,因此您的所有计算都应放入模型中。Controller作为请求此类数据的用户和视图之间的层,将执行来自 的方法Model并将检索到的数据分配给稍后将用于Views显示该数据的变量。此外,最好使用诸如sidekiq 之类的 gem以及预定的后台 rake 作业中计算统计数据。

于 2012-10-08T20:16:49.617 回答