2016-10-31 88 views
1

我得到這個問題: 我有一個複雜的模型,食譜,has_many成分,belongs_to用戶,有回形針的圖像。如何創建延遲的複雜對象創建

我嘗試爲每個新用戶創建一些基礎對象。例如:配方,它的成分(每個用戶都是不同的)。 如何創建一個工作來處理這些食譜作品?知道他們必須是由他們的用戶編輯等。這對一個基本模型沒有關係很容易,但我在這裏被阻止...

- 我不想爲所有用戶創建配料或食譜,我希望他們能夠刪除它們。

這裏有一個單一的配方創造PARAMS通過隨機用戶:

Parameters: {"utf8"=>"✓", "recipe"=>{"name"=>"Recipe test", "category"=>"Chocolate", "owner"=>"Tom", "baking"=>"100", "note"=>"", 
"quantities_attributes"=>{"0"=>{"ingredient_id"=>"6434", "weight"=>"100", "_destroy"=>"false"}, "1"=>{"ingredient_id"=>"6681", "weight"=>"10", "_destroy"=>"false"}, "2"=>{"ingredient_id"=>"6668", "weight"=>"210", "_destroy"=>"false"}, "3"=>{"ingredient_id"=>"6591", "weight"=>"100", "_destroy"=>"false"}, "4"=>{"ingredient_id"=>"6611", "weight"=>"20", "_destroy"=>"false"}, "5"=>{"ingredient_id"=>"", "weight"=>"", "_destroy"=>"false"}}, 
"process"=>"<p>This is a f*** test of recipe recipe creation</p>\r\n\r\n<p><img alt=\"\" height=\"26\" src=\"http://localhost:3000/assets/ckeditor/plugins/smiley/images/Emoji Smiley-109.png\" title=\"\" width=\"26\" /></p>\r\n"}, 
"commit"=>"SUBMIT"} 

任何想法?

回答

1

您可以將食譜和配料作爲主表,您可以創建另一個模型,如UserRecipeIngredients,它將充當用戶,食譜和配料之間的連接表。這個連接表應該有user_idrecipe_idingredient_id,這個模型會有如下的關聯。

belongs_to user 
belongs_to recipe 
belongs_to ingrdient 
+0

我做了一個數量表(「quantity_attributes」=>等),但這不是我的問題..我的問題是爲這些模型爲每個用戶創建一個隨機配方。例如:@ user.recipe.create(name:「」等。quantities_attributes:{PROBLEM HERE})如何處理沒有配料ID的數量 –

0

我不確定是否正確理解你的問題,但是,你不應該在你的數據庫中存儲假數據。

如果是爲了某種目的而顯示,定義在配方模型的方法,其建立與假許多成分假的記錄,並調用它,無論你在

在另一方面想,如果你想要一個動作要做的是創建一個用戶記錄之後,例如,只是定義您的用戶模型中的after_create回調

1

很抱歉,如果我的問題是不清楚,我發現通過定義成分變量的解決方案:

ingredient = user.ingredients.find_by_name("Apricots") 
user.recipes.create!([ 
      { name: "test", category: "Chocolats", baking: "110", quantities_attributes: {"0"=>{"ingredient_id"=>ingredient.id, "weight"=>"100", "_destroy"=>"false"}},process: "try &nbsp;<img alt=\"\" height=\"26\"src=\"http://localhost:3000/assets/ckeditor/plugins/smiley/images/Emoji Smiley-109.png\""} 
      ]) 

謝謝喲你的幫助@ Jayaprakash & @Thouter