Я новичок в Rails и задаюсь вопросом, каков правильный «Rails way» для обработки следующей ситуации. Приложение, над которым я работаю, - это бэкэнд Rails с поддержкой Api с интерфейсом ReactJS. В моей схеме у меня есть три модели, которые связаны по-разному (подробнее об этом немного): Composer, Album, Track. В клиенте я создать объект, который выглядит примерно так:Rails 5 API, создающий только записи из вложенных массивов атрибутов
{
composer: {
name: 'Foo',
other_info: 'Blah Blah',
albums: [
{
title: 'Album 1',
tracks: [
{
title: 'Track 1',
},
{
title: 'Track 2',
},
]
},
{
title: 'Album 2',
tracks: [
{
title: 'Track 1',
},
{
title: 'Track 2',
},
]
},
]
}
}
Ассоциация является:
- Композиторов и альбомы связаны с
has_many through
соотношения (Композиторы могут иметь много альбомов и альбомы могут иметь много композиторов). - Альбом
has_many
треков и каждого трекаbelongs_to
одного альбома. - Композитор
has_many
дорожки и каждый трекbelongs_to
один композитор.
Легко для меня update
композитора, альбом, или дорожка записи, потому что у меня уже есть id
и что, как представляется, обрабатываются автоматически Rails. (Круто!)
Мой вопрос заключается в следующем:
Есть ли способ, чтобы отправить объект выше в POST
запрос, который будет анализировать вне альбомов и треков, где я могу установить правильные ассоциации?
Мой наивный метод (который я был в процессе настройки на клиенте ... и я действительно не хочу делать что-то бизнес-логику там) заканчивается в следующем виде:
- Создайте запись
Composer
иPOST
в Rails API. - Создайте запись
Album
иPOST
в Rails API. - Создайте все записи
Track
иPOST
в Rails API. - Обновление каждого
Track
с идентификаторами композитора и альбома. - Обновить
Album
для связи сComposer
.
Я бы много достаточно обрабатывал все это в API. (Тем более, что мне нужно, чтобы справиться с ситуациями, когда Album
уже существует и должен быть обновленный в отличие схождение создал.)
Таким образом, в сущности, я надеюсь, что клиент просто должен представить объект с вложенными сущности, поскольку это выше, то я делаю всю работу, устанавливая новые Composer
, Album
и Track
записи и ассоциации на заднем конце.
Это возможно или даже рекомендуется?И если это так, я могу действительно использовать хороший источник документации или учебник о том, как эта ситуация обрабатывается. Мои навыки поиска не уступили ничего, что похоже на решение этой проблемы.
Спасибо!