2013-03-15 105 views
0

我需要单表继承(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为零。任何帮助将不胜感激!

回答

0

您可以在模型上的before_save回调中设置值。