我是Rails的新手,我想知道适当的" Rails方式"是处理以下情况。我正在处理的应用程序是一个带有ReactJS前端的Rails api-only后端。在我的模式中,我有三个以各种方式关联的模型(稍微更多):Composer,Album,Track。在客户端我创建一个看起来大致如下的对象:
{
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自动处理的。 (COOL!)
我的问题是:
有没有办法在POST
请求中发送上述对象,该请求将解析相册并跟踪我可以设置正确关联的位置?
我天真的方法(我正在设置客户端......我真的不想在那里做那种业务逻辑)最终成为以下内容:
Composer
记录和POST
到Rails API。Album
记录和POST
到Rails API。Track
条记录和POST
到Rails API。 Track
。Album
相关联的Composer
。我会很多而是在API中处理所有这些。 (特别是因为我需要处理Album
已经存在且需要更新而不是创建的情况。)
所以从本质上讲,我希望客户端只需要提交带有嵌套实体的对象,然后我就完成所有工作,设置新的Composer
,Album
和Track
后端的记录和关联。
这是可行的,甚至是推荐的吗?如果是这样,我真的可以使用一个很好的文档来源或关于如何处理这种情况的教程。我的搜索技巧未能产生任何似乎能解决这个问题的东西。
谢谢!
答案 0 :(得分:0)
事实证明,解决方案很简单,尽管我的架构实现起来太难了。 两者与作曲家相关的曲目和专辑太麻烦了,所以我不理解这个想法。
我发现我使用:albums
和:tracks
代替:albums_attributes
和:tracks_attributes
。这种变化使得所有关联魔法自动发生。