rails后处理数据的最佳实践

时间:2012-10-08 19:52:49

标签: ruby-on-rails

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

2 个答案:

答案 0 :(得分: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

希望这有帮助。

答案 1 :(得分:0)

由于模型处理所有业务逻辑,因此所有计算都应放在模型中。 Controller作为请求此类数据和视图的用户之间的层将执行Model中的方法,并将检索到的数据分配给稍后在Views中用于显示该数据的变量。此外,最好在预定的后台佣金工作中使用sidekiqwhenever这样的宝石来计算统计数据。