我有一個食譜模型和一個成分模型。成分belongs_to食譜和食譜has_many成分。一切工作正常。嵌套屬性正在更新。Rails嵌套模型更新不使用子控制器。什麼被稱爲?
但我有我的嵌套模型上的一個屬性,我想操縱之前,它被存儲在數據庫中。我有IngredientsController更新方法中的代碼來處理這個問題。
我期待RecipeController的update方法在更新嵌套的Ingredients時調用IngredientController的update方法。這顯然不會發生。
在更新過程中,我可以使用什麼機制來操縱嵌套模型對象?
更多詳細信息: 我將成分數量作爲浮點數存儲在數據庫中 (1.25,0.333333,3.5,4.0等)。 我希望用戶能夠看到並編輯該值作爲馬虎分數 (1 1/4,1/3,3 1/2,4)。
所以我寫了String.to_f_sloppy和Float.to_s_sloppy函數來操縱數字。在展示上,沒有問題,我只是使用ingredient.quantity.to_s_floppy。但是,當某人編輯配料並更改數量時,當它到達before_update和before_validation函數時,該值已經更改(如運行到to_f)。
下面是來通過參數: 參數:{ 「UTF8」=> 「√」, 「authenticity_token」=> 「ojOwp68P3ObiufowfKtbfYxpV31 + vZPz64qYQAL/1ld8Px93OrDX2Gvy/yxljENJOhiLW3DUoE0C2upvHuF3CA ==」, 「配方」=> {「USER_ID 「=>」1「,」name「=>」Chicken Piccata「,」description「=>」「,」category「=>」entree「,」yield「=>」4.0「, 」ingredients_attributes「=> { 「0」=> {「recipe_id」=>「12」, 「name」=>「去皮無骨雞胸肉」, 「unit_id」=>「40」, 「quantity」=>「2 1/2 「, 」comment「=>」「, 」_destroy「=>」0「,」id「=>」122「}}},」commit「=>」Save Recipe「,」id「=>」12 「}
在i ngredients.rb,我有:
class Ingredient < ActiveRecord::Base
belongs_to :unit
belongs_to :recipe
before_update :translate_quantity
def translate_quantity
puts "UPDATE QUANTITY IS #{self.quantity}"
end
end
此輸出: 更新量爲2.0
所以我纔可以得到的價值,它已經改變。
我嘗試這樣做。請參閱上面的MORE INFO部分,瞭解它爲什麼似乎沒有幫助。 – mjenkins