我正在尝试将每个播放列表的第一首歌曲加入到一系列播放列表中,并且很难找到有效的解决方案。
我有以下型号:
class Playlist < ActiveRecord::Base
belongs_to :user
has_many :playlist_songs
has_many :songs, :through => :playlist_songs
end
class PlaylistSong < ActiveRecord::Base
belongs_to :playlist
belongs_to :song
end
class Song < ActiveRecord::Base
has_many :playlist_songs
has_many :playlists, :through => :playlist_songs
end
我想得到这个:
playlist_name | song_name
----------------------------
chill | baby
fun | bffs
我很难通过加入找到一种有效的方法来做到这一点。
更新* ***
Shane Andrade 带领我走向了正确的方向,但我仍然无法得到我想要的。
这是我所能得到的:
playlists = Playlist.where('id in (1,2,3)')
playlists.joins(:playlist_songs)
.group('playlists.id')
.select('MIN(songs.id) as song_id, playlists.name as playlist_name')
这给了我:
playlist_name | song_id
---------------------------
chill | 1
这很接近,但我需要第一首歌(根据 id)的名称。