0

単一テーブル継承 (STI) と、継承されたモデルのデフォルト値の初期化について助けが必要です。

たとえば、プレイヤーから継承する雑食、草食動物、および草食動物のモデルがあり、プレイヤーはユーザーから継承します。

STI を介して、すべてのモデルに lvl、xp、hp、ap、および max_xp、max_hp、および max_ap があります。

データベース経由では、すべての値のデフォルトは 0 または 1 です。 (:users、:xp、:integer、デフォルト: 0)

しかし、私がやろうとしているのは、各クラスのインスタンスに対して異なる値を初期化することです. たとえば、新しい肉食動物の各オブジェクトは 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 を nil に設定しました。どんな助けでも大歓迎です!

4

1 に答える 1

0

モデルの before_save コールバックで値を設定できます。

于 2013-03-15T05:13:23.013 に答える