我正在Rails中构建一个小型的语言学习应用程序,并且遇到以下问题。模型“ Flashcard”在数据库中具有两个整数值:“计数器”和“级别”。
计数器指示看过抽认卡的次数。级别取决于计数器,例如:
如果计数器介于0到10之间,则级别应为1
如果计数器介于11到20之间,则计数器应为2,依此类推。
我的问题是:如何根据另一列的值更新表的一列?
我可能会使用一系列的if语句或case语句,但是也许有一种更简单的方法可以在Model中设置所有这些。
谢谢。
答案 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