我的以下问题可能表明缺乏对Ruby,Rails甚至一般oOP概念中的工作方式的正确理解,并且相信我在询问之前经常思考和搜索,但我甚至无法形成正确的搜索查询以找到正确的答案,所以无论如何这里是我想要实现的......
song = Artist.first.albums.first.songs.first
这 - 我的理解 - 将调用歌曲模型并将Artist模型和专辑模型引用传递给Song模型以形成SQL查询以从DB获取数据 - 因为我使用的是ActiveRecord。
真正的问题;有没有办法知道哪个艺术家和专辑称为歌曲模型?这在多对多关系中特别有用,我不想为专辑/艺术家传递额外的参考。
因此,如果我的模型中有一个函数,无论出于什么原因,它都可以告诉谁创建了这个Song实例?
答案 0 :(得分:0)
链接过多而且过于复杂。
但是,您可以song.artist
或song.album
来检索歌曲的艺术家和专辑,假设您在自己的关系中声明了belongs_to :album
和belongs_to :artist
关系歌曲模型。
但是,您可以这样做:
artist = Artist.first
album = artist.albums.first
songs = album.songs
通过这种方式,您可以拥有艺术家,他/她想要的专辑(在这种情况下是第一张专辑),并且歌曲都包含在不同的变量中,您可以单独处理它们。