Ruby on rails 如何使:级别等于特定天数?
我正在创建一个习惯跟踪应用程序。当用户开始新习惯时,他必须先完成5个层次,然后才能把自己当作一个大师。 我想把等级分为5级,总共100天 水平日 1 = 10 2 = 15 3 = 20 4 = 25Ruby on rails 如何使:级别等于特定天数?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在创建一个习惯跟踪应用程序。当用户开始新习惯时,他必须先完成5个层次,然后才能把自己当作一个大师。 我想把等级分为5级,总共100天 水平日 1 = 10 2 = 15 3 = 20 4 = 25 5=30我不确定你的其他参数在做什么,但我认为总体思路是这样的 t.string "habitname" t.integer "levelone" t.integer "leveltwo" etc. t.references :user, index: t
5=30我不确定你的其他参数在做什么,但我认为总体思路是这样的
t.string "habitname"
t.integer "levelone"
t.integer "leveltwo" etc.
t.references :user, index: true
t.timestamps null:false
然后在控制器中访问这些值
@habit = Habit.find(:id)
@habit.levelone = whatever days
您可以只在模型中存储天数,然后添加一个方法来返回该天数的级别。无需在模型中存储:level,只需:天
如果我没弄错的话,你会想要一个等级 第六级是大师级。我应该把:@habity=habity.find:id@habity.levelone=控制器中的哪几天?我扩展了控制器代码以提供更好的想法。非常感谢你的帮助!
class Habit < ActiveRecord::Base
belongs_to :user
validates :action, presence: true
def get_level
case days
when 0..10
1
when 11..15
2
when 16..20
3
when 21..25
4
else
5
end
end
end
def levels
case days
when 0..9
1
when 10..24
2
when 25..44
3
when 45..69
4
when 70..99
5
else
6
end