Я пытаюсь сохранить объект, в котором есть рецепт и несколько ингредиентов. Данные поступают из моего углового 2 приложения, которое передает объект как JSON. Приложение rails 5 api получит объект рецепта и сохранит его непосредственно в моей БД с использованием сильных параметров. Сейчас я могу сохранить объект рецепта в базе данных, но по какой-то причине ингредиенты внутри него не сохраняются. Я проверил документацию по рельсам, и я не нашел проблем с моим текущим кодом. Любые мысли были бы оценены.Рельсы 5 сильных параметров с вложенными множественными атрибутами
recipe.rb
class Recipe < ApplicationRecord
has_many :ingredients
accepts_nested_attributes_for :ingredients
end
ingredient.rb
class Ingredient < ApplicationRecord
belongs_to :recipe
end
recipe_controller.rb
def create
@recipe = Recipe.new(recipe_params)
if @recipe.save
render json: @recipe, status: :created, location: @recipe
else
render json: @recipe.errors, status: :unprocessable_entity
end
end
def recipe_params
params.require(:recipe).permit(:name , :description, :imagePath, ingredients_attributes: [ :id, :name, :amount])
end
мой журнал консоли
Started POST "/recipes" for ::1 at 2017-01-09 11:40:44 +0900
ActiveRecord::SchemaMigrationLoad(0.3ms)SELECT`schema_migrations`.* FROM `schema_migrations`
Processing by RecipesController#create as HTML Parameters: {"name"=>"Spaghetti", "imagePath"=>"http://cdn2.tmbi.com/TOH/Images/Photos/37/300x300/exps36749_SD143203D10__25_1b.jpg", "description"=>"Delicious spaghetti", "ingredients"=>[{"name"=>"Tomato", "amount"=>1}, {"name"=>"Pasta", "amount"=>1}], "recipe"=>{"name"=>"Spaghetti", "description"=>"Delicious spaghetti", "imagePath"=>"http://cdn2.tmbi.com/TOH/Images/Photos/37/300x300/exps36749_SD143203D10__25_1b.jpg"}}
(0.1ms) BEGIN
SQL (0.2ms) INSERT INTO `recipes` (`name`, `description`, `imagePath`, `created_at`, `updated_at`) VALUES ('Spaghetti', 'Delicious spaghetti', 'http://cdn2.tmbi.com/TOH/Images/Photos/37/300x300/exps36749_SD143203D10__25_1b.jpg', '2017-01-09 02:40:44', '2017-01-09 02:40:44')
(0.7ms) COMMIT
Completed 201 Created in 9ms (Views: 1.0ms | ActiveRecord: 2.1ms)
Разве не о сильных параметрах? Вот хороший пост [как разрешить массив в сильных параметрах] (http://jaketrent.com/post/permit-array-rails-strong-parameters/) – matiss
Я уже пробовал, он просто игнорирует ингредиенты внутри объекта рецепта. – Johji