Я пытаюсь присоединиться к первой песне каждого плейлиста к множеству плейлистов, и мне довольно сложно найти эффективное решение.Получить первую ассоциацию из a имеет много через ассоциацию
У меня есть следующие модели:
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
У меня довольно трудное время найти эффективный способ сделать это через объединение.
UPDATE * ***
Шейн Андраде привел меня в правильном направлении, но я до сих пор не могу получить именно то, что я хочу.
Это, насколько я был в состоянии получить:
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
Это близко, но мне нужна первая песня (по идентификатору) имя.
Какой массив плейлистов вы хотите присоединиться к каждой песне? Все плейлисты, которые содержат эту песню? – Leito
Вы пытаетесь найти все плейлисты с заданным именем и определенной песней. Или вы хотите просто вывести массив всех плейлистов по первой песне? –
@rocketscientist позже. playlist_names рядом со своей первой песней – mrabin