初始化Rails中继承模型的实例方法值
问题描述:
我需要单表继承(STI)和初始化继承模型的默认值方面的帮助。初始化Rails中继承模型的实例方法值
例如,我有从玩家继承的Omnivore,Herbivore和Herbivore模型,并且Player从用户继承。
通过STI,所有模型都有lvl,xp,hp,ap和max_xp,max_hp和max_ap。 (:用户:XP,:整数,默认:0)
,但我想要做的是对的实例初始化值不同
通过数据库,所有的值默认为0或1。每班。例如,每个新的食肉动物物体都会设置LVL的值:1 XP:0/50,HP:5/5,AP:3/3,而草食动物的LVL:1 XP:0/50,HP:3/3 ,AP:5/5,草食动物LVL:1 XP:0/50,AP/HP:4/4。
另外,当xp值超过max_xp时,lvl会增加。像
when xp > max_hp
lvl += 1
end
或
xp = 70
lvl = case xp
when 0..40 then 1
when 41..60 then 2
when 61..70 then 3
when 71..100 then 4
else "Overpowered"
end
where do I put this?
怎么可能ü接近这两个问题?
我想这样的事情可能会为初始化值
def initialize
@xp = 100
end
,但没有工作的工作,而不是设置@xp为零。任何帮助将不胜感激!
答
您可以在模型上的before_save回调中设置值。