В моем учебном проекте Rails (только API) у меня есть 2 модели, группа и альбом, которые имеют отношение «один ко многим». Когда я пытаюсь сохранить группу с вложенными (уже существующими) альбомами, я получаю следующую ошибку: ActiveRecord::RecordNotFound (Couldn't find Album with ID=108 for Group with ID=)
. Я использую гем jsonapi-serializer. Ниже моя текущая установка. Любая помощь приветствуется.
Модели
class Group < ApplicationRecord
has_many :albums
accepts_nested_attributes_for :albums
end
class Album < ApplicationRecord
belongs_to :group
end
Контроллер групп#создать
def create
group = Group.new(group_params)
if group.save
render json: GroupSerializer.new(group).serializable_hash
else
render json: { error: group.errors.messages }, status: 422
end
end
Контроллер групп#group_params
def group_params
params.require(:group)
.permit(:name, :notes, albums_attributes: [:id, :group_id])
end
Сериализаторы
class GroupSerializer
include JSONAPI::Serializer
attributes :name, :notes
has_many :albums
end
class AlbumSerializer
include JSONAPI::Serializer
attributes :title, :group_id, :release_date, :release_date_accuracy, :notes
belongs_to :group
end
Пример полезной нагрузки JSON
{
"group": {
"name": "Pink Floyd",
"notes": "",
"albums_attributes": [
{ "id": "108" }, { "id": "109" }
]
}
}