Ruby on rails Rails ActiveRecord:如何通过视图中的超级父级获取不重复的子记录?
我有四个表格,分别是Ruby on rails Rails ActiveRecord:如何通过视图中的超级父级获取不重复的子记录?,ruby-on-rails,ruby,activerecord,rails-activerecord,Ruby On Rails,Ruby,Activerecord,Rails Activerecord,我有四个表格,分别是专辑,歌曲,歌手和歌曲歌手 Albums { Id, Name } Songs { Id, AlbumId, Name } Singers { Id, Name } SongSingers { Id, SongId, SingerId } 这张专辑有许多歌曲 这首歌属于一张专辑 歌手属于歌曲和歌手 歌曲和歌手有很多歌手 每首歌可能有相同或不同的歌手 鉴于此,我如何通过AlbumId获得所有非重复歌手 谢谢。绝对没问题。 你在找歌手。这就是查询的开始 您对存储在关联中的
专辑
,歌曲
,歌手
和歌曲歌手
Albums { Id, Name }
Songs { Id, AlbumId, Name }
Singers { Id, Name }
SongSingers { Id, SongId, SingerId }
- 这张专辑有许多歌曲
- 这首歌属于一张专辑
- 歌手属于歌曲和歌手
- 歌曲和歌手有很多歌手
@album.songs
Singer.joins(:songs)
Singer.joins(:songs).merge(@album.songs)
# It's pretty much the same as this, but more concise:
Singer.joins(:songs).merge(songs: {album_id: @album.id})
Singer.joins(:songs).merge(@album.songs).uniq
class Album < ActiveRecord::Base
has_many :songs
has_many :song_singers, :through => :songs
has_many :singers, :through => :song_singers
...
end
工作完美。谢谢你,伙计。
@album.singers.uniq