Rails如何计算几个选择框的平均值

时间:2013-07-17 01:36:36

标签: ruby-on-rails average drop-down-menu

我的表单中有5个选择框。 用户可以使用它们从1到5中选择一个音符。 我想从选择中获取这些选择的注释 守时= 5 注意= 3 。 。 计算平均值并将其保存在数据库中。 我是否必须在模型中创建方法并访问params哈希?或params散列仅在控制器中可用?

1 个答案:

答案 0 :(得分:0)

您可以访问模型中的参数。但通常在控制器中访问params。要解决您的问题:

首先,创建一个列以保存平均值,我假设您的表名为grades

# generate migration file
rails g migration add_average_to_grades average:float
# update your database
rake db:migrate

其次,在您的模型中使用回调计算平均值:

before_save :set_average

def set_average
  self.average = [punctuality, attention ... ].sum / [punctuality, attention ...].size
end

第三,你的控制器应保持完整,如:

def create
  @grade = Grade.new params[:grade]

  if @grade.save
    # handle success
  else
    # handle grade not saved
  end
end