各プレイリストの最初の曲をプレイリストの配列に結合しようとしていますが、効率的な解決策を見つけるのにかなり苦労しています。
私は次のモデルを持っています:
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 による) の名前が必要です。