rails app considéré la chanson modèles suivants, le jeu, radio_station: chanson has_many joue radio_stations jeu has_many radio_station a attribut « CALL_SIGN »Comment créer une condition de chercheur qui fonctionne sur le modèle associé
Je veux créer une trouvaille pour la chanson qui retournerait pour moi les toutes les chansons où le dernier jeu (de la chanson) a été jouée par une station de radio de « WKRP »
que je pouvais faire
trouvées = [] song. find (: all,: include => [{: plays => [: radio_station]}]). chaque do | chanson | trouvé < < chanson si song.plays.last.radio_station.call_sign == « WKRP » fin
mais cela signifierait que toutes les chansons doivent être tiré vers le bas de la DB première et bouclées ... qui se lent comme le nombre de chansons et joue des constructions.
Comment puis-je mettre cela dans une condition de recherche?
Il semble que cela est quelque chose qui devrait être faisable - mais je ne peux pas comprendre comment et je ne suis pas vraiment un gourou SQL ...
puis .. aimerais le presser dans un nom portée pour que je puisse l'appeler comme:
Song.find_all_last_played_at ("WKRP")
merci - comment est-ce que je ferais votre dernière suggestion? la mise en cache du dernier play_id? cela signifie-t-il qu'il n'est pas enregistré dans la base de données mais disponible dans chaque enregistrement? – Streamline
Ajoutez un last_play_id à la table des chansons. Puis ajoutez du code comme ceci: class Lecture after_create do | play.song.last_play_id = play.id play.song.save! fin fin – wvanbergen