假设我在HP模型中跟踪角色的健康状况。
我有HP.min,HP.max和HP.current,这三个属性分别跟踪最小HP,最大HP和当前HP的字符。
我有一个允许玩家输入最小和最大HP的表单。我想在创建时将HP.current设置为params [:max]的值,因为播放器的当前和最大HP的值完全相同,看起来非常冗余。
实现这一目标的最佳方法是什么?我尝试了一些ActiveRecord回调(after_save,before_create),但没有运气。
答案 0 :(得分:1)
您目前如何使用回调?也许您可以发布一些代码,以便我们可以看到实现是否存在问题。 :)
或者,我假设表单值将传递给控制器,您可以通过在保存记录之前设置max => params[:max], current => params[:max]
来手动构建记录。
答案 1 :(得分: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