2013-03-15 72 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回調中設置值。