J'essaie de créer un named_scope qui utilise une jointure, mais bien que le SQL généré semble correct, le résultat est nul. Par exemple :
class Clip < ActiveRecord::Base
named_scope :visible, {
:joins => "INNER JOIN series ON series.id = clips.owner_id INNER JOIN shows on shows.id = series.show_id",
:conditions=>"shows.visible = 1 AND clips.owner_type = 'Series' "
}
(Un clip appartient à une série, une série appartient à un spectacle, un spectacle peut être visible ou invisible).
Clip.all le fait :
SELECT * FROM `clips`
Clip.visible.tout fait :
SELECT * FROM `clips` INNER JOIN series ON series.id = clips.owner_id INNER JOIN shows on shows.id = series.show_id WHERE (shows.visible = 1 AND clips.owner_type = 'Series' )
Ça a l'air bien. Mais le tableau de modèles de clips qui en résulte comprend un clip dont l'identifiant ne se trouve pas dans la base de données - il a pris l'identifiant d'une émission à la place. Où est-ce que je me trompe ?