Sto provando ad unire la prima canzone di ogni playlist a una serie di playlist e sto avendo un momento piuttosto difficile trovare una soluzione efficiente.Ottenere la prima associazione da una ha attraverso l'associazione
Ho i seguenti modelli:
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
vorrei ottenere questo:
playlist_name | song_name
----------------------------
chill | baby
fun | bffs
Sto avendo un periodo piuttosto difficile trovare un modo efficace per fare questo attraverso un join.
UPDATE * ***
Shane Andrade mi ha portato nella giusta direzione, ma non riesco ancora a ottenere esattamente quello che voglio.
Questo è quanto sono stato in grado di ottenere:
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')
Questo mi dà:
playlist_name | song_id
---------------------------
chill | 1
Questa è vicino, ma ho bisogno la prima canzone (secondo id) il nome
Quale array di playlist vuoi unire a ogni canzone? Tutte le playlist che contengono questa canzone? – Leito
Stai provando a cercare tutte le playlist con un nome e una canzone specifici o vuoi solo produrre una matrice di tutti i nomi di playlist accanto alla loro prima canzone? –
@rocketscientist il più tardi. playlist_names accanto al loro primo brano – mrabin