2

假设我在我的 HP 模型中跟踪角色的健康状况。

我有 HP.min、HP.max 和 HP.current,三个属性分别跟踪字符最小 HP、最大 HP 和当前 HP。

我有一个表格,允许玩家输入他们的最小和最大 HP。然后我想在创建时将 HP.current 设置为 params[:max] 的值,因为让玩家的当前和最大 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 回答