2

HPモデルでキャラクターの健康状態を追跡しているとしましょう。

HP.min、HP.max、HP.currentの3つの属性があり、それぞれ最小HP、最大HP、現在のHPの文字を追跡します。

プレイヤーが最小HPと最大HPを入力できるフォームがあります。次に、作成時にHP.currentをparams [:max]の値に設定したいと思います。これは、プレーヤーの現在のHPと最大HPの値がまったく同じであるため、非常に冗長に見えるためです。

これを達成するための最良の方法は何ですか?いくつかのActiveRecordコールバック(after_save、before_create)を試しましたが、うまくいきませんでした。

4

2 に答える 2

1

現在、コールバックをどのように使用していますか?おそらく、実装に問題があるかどうかを確認できるように、コードを投稿することができます。:)

または、フォームの値がコントローラーに渡され、レコードをmax => params[:max], current => params[:max]保存する前に設定することで手動でレコードを作成できると思います。

于 2013-03-26T04:26:50.850 に答える
1

モデルでそれを行う:

before_save { |hp| hp.current = hp.max }

または、コントローラーで何かを実行します。

def update
  @hp.current = params[:max] if params[:max]
  if @hp.update_attributes(params[:hp])
    # your options here
  else
    # your options here
end
于 2013-03-26T04:43:58.240 に答える