2013-03-26 70 views
2

假設我在HP模型中跟蹤角色的健康狀況。Rails:如何在創建時將多個屬性設置爲相同的值?

我有HP.min,HP.max和HP.current,這三個屬性分別跟蹤字符最小HP,最大HP和當前HP。

我有一個表格,允許玩家輸入他們的最小和最大HP。然後,我想在創建時將HP.current設置爲params [:max]的值,因爲玩家的當前值和整個HP值完全相同,最大HP似乎超級冗餘。

完成此操作的最佳方法是什麼?我嘗試了一些ActiveRecord回調(after_save,before_create),但沒有運氣。

+0

你能在這裏告訴我你的代碼? – 2013-03-26 04:38:46

+0

您在保存前是否有任何驗證設置爲最小,最大和最新電流? – 2013-03-26 04:40:43

+0

請記住before_create會在有效之後發生 – 2013-03-26 04:41:43

回答

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 
+0

這樣做。謝謝! – 2013-03-26 20:06:34

1

您目前如何使用回調?也許你可以發佈一些代碼,以便我們可以看到實現是否存在問題。 :)

或者,我假設表單值將傳遞給控制器​​,並且您可以在保存記錄之前通過設置max => params[:max], current => params[:max]手動創建記錄。

+0

是的,我也考慮過這樣做,但我覺得它並不覺得'乾淨'。 – 2013-03-26 20:06:58

相關問題