我需要有关单表继承 (STI) 和初始化继承模型的默认值的帮助。
例如,我有 Omnivore、Herbivore 和 Herbivore 模型,它们继承自 Player,而 Player 继承自 User。
通过 STI,所有模型都有 lvl、xp、hp、ap 和 max_xp、max_hp 和 max_ap。
通过数据库,所有值默认为 0 或 1。 (:users, :xp, :integer, default: 0)
但我想做的是为每个类的实例初始化不同的值。例如,每个新的 Carnivore 对象将具有 LVL:1 XP:0/50,HP:5/5,AP:3/3 的设置值,而 Herbivore 将具有 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 设置为nil。任何帮助将不胜感激!