2016-10-31 2 views
1

У меня возникла проблема: У меня есть сложная модель, рецепт, который содержит_информации, принадлежит пользователю, имеет скрепки.Как создать создание отложенных сложных объектов

Я пытаюсь создать некоторые базовые объекты для каждого нового пользователя. Например: рецепт, с его ингредиентами (которые являются разными для каждого пользователя). Как создать работу для обработки этих рецептов? зная, что они должны быть доступны для редактирования их пользователями и т. д. Это легко для базовой модели без каких-либо отношений, но я заблокирован здесь ...

-I не хочу создавать ингредиенты или рецепты для всех пользователей, я хотите, чтобы они могли их удалить.

Вот 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_id и recipe_id и ingredient_id, и эта модель будет иметь ассоциации, как показано ниже.

belongs_to user 
belongs_to recipe 
belongs_to ingrdient 
+0

Я сделал это с таблицей количества ("quantity_attributes" => и т. д.), но это не моя проблема. Моя проблема заключается в создании произвольного рецепта для каждого пользователя с этими моделями , например: @ user.recipe.create (имя: "" и т. д. quantity_attributes: {ПРОБЛЕМА ЗДЕСЬ}), как обрабатывать количества без идентификаторов ингредиентов –

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\""} 
      ]) 

Спасибо йо u для вашей помощи @Jayaprakash & @Thounder

Смежные вопросы