Je suis nouveau sur Rails et je me demande quelle est la bonne manière de "Rails" pour gérer la situation suivante. L'application sur laquelle je travaille est un backend api-only avec un frontal ReactJS. Dans mon schéma j'ai trois modèles qui sont associés de différentes manières (plus sur cela dans un peu): Compositeur, Album, Piste. Dans le client je créer un objet qui ressemble à peu près comme ceci:Rails 5 API ne crée que des enregistrements à partir de tableaux d'attributs imbriqués
{
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',
},
]
},
]
}
}
Les associations sont les suivantes:
- Compositeurs et albums sont associés à la relation
has_many through
(compositeurs peuvent avoir de nombreux albums et les albums peuvent avoir beaucoup de compositeurs). - Album
has_many
pistes, et chaque pistebelongs_to
un seul album. - Compositeur
has_many
pistes et chaque pistebelongs_to
un seul compositeur.
Il est facile pour moi de update
Composer, Album, ou parce que je Track Records ai déjà id
et qui semble être traitée automatiquement par Rails. (Cool!)
Ma question est la suivante:
Est-il possible d'envoyer l'objet ci-dessus dans une requête POST
qui parse les albums et les pistes où je peux définir les associations appropriées?
Ma méthode naïve (que j'étais en train de mettre en place sur le client ... et je vraiment ne veux pas faire ce genre de logique métier là-bas) se termine comme suit:
- Créez l'enregistrement
Composer
etPOST
vers l'API Rails. Créez l'enregistrementAlbum
et l'APIPOST
vers Rails. - Créez tous les enregistrements
Track
etPOST
vers l'API Rails. - Mettez à jour chaque
Track
avec les ID Composer et Album. - Mettre à jour le
Album
à associer auComposer
.
Je voudrais beaucoup gérer plutôt tout cela dans l'API. (Surtout parce que je dois faire face aux situations où le Album
existe déjà et doit être mis à jour comme pied opposé créé.)
Donc, en substance, j'espère que le client vient de soumettre l'objet avec imbriqué entités comme il est ci-dessus, alors je fais tout le travail de mise en place de nouveaux enregistrements Composer
, Album
, et Track
sur le dos.
Est-ce faisable ou même recommandé?Et si oui, je pourrais vraiment utiliser une bonne source de documentation ou un tutoriel sur la façon dont cette situation est gérée. Mes compétences de recherche n'ont pas réussi à donner quelque chose qui semble résoudre ce problème.
Merci!