如何根据Rails中第二列的值更新一列

时间:2018-10-03 18:02:03

标签: ruby-on-rails

我正在Rails中构建一个小型的语言学习应用程序,并且遇到以下问题。模型“ Flashcard”在数据库中具有两个整数值:“计数器”和“级别”。

计数器指示看过抽认卡的次数。级别取决于计数器,例如:

如果计数器介于0到10之间,则级别应为1

如果计数器介于11到20之间,则计数器应为2,依此类推。

我的问题是:如何根据另一列的值更新表的一列?

我可能会使用一系列的if语句或case语句,但是也许有一种更简单的方法可以在Model中设置所有这些。

谢谢。

2 个答案:

答案 0 :(得分:1)

以设置级别的方式覆盖您的“ counter =”方法。使用“超级”方法将正常更新您的计数器,而不更改方法。对于级别,请尝试使用数学根据计数器的值自动设置它。

def counter=(value)
  self.level = [(counter - 1) / 10 + 1, 1].max
  super
end

答案 1 :(得分:0)

为什么还要使用level字段?只需有一个level方法,该方法将基于counter字段返回一个值。大概是这样的:

class Flashcard < ActiveRecord::Base

  def level
    ([counter-1,0].max/10)+1
  end

end