Um ein paar der neuen Rails-Features auszuprobieren, baue ich eine
kleine Filmdatenbank. Darin gibt es Filme, Personen, Rollen und
RollenTypen. RollenTypen gibt es “Schauspieler” und “Regisseur”. Ich
möchte nun für Personen eine Assoziation definieren, die die Person mit
allen Filmen verknüpft, in denen sie mitgespielt hat.
Das hatte ich mir zunächst so gedacht
class Person < ActiveRecord::Base
has_many :roles, :include => :role_type
has_many :acts_in, :through => :roles, :source => :movie,
:order => ‘release_date’,
:conditions => { :roles => { :role_type => { :name => ‘Actor’ } } }
Es funktioniert aber nicht, weil das :include von roles nicht an die
abgeleitete acts_in weitergegeben wird. Nächster Versuch
class Person < ActiveRecord::Base
has_many :roles
has_many :acts_in, :through => :roles, :source => :movie,
:order => ‘release_date’,
:include => :role_type,
:conditions => { :roles => { :role_type => { :name => ‘Actor’ } } }
Geht auch nicht, weil :include sich auf das Zielmodel, nämlich Movie,
bezieht.
Ist es ohne handgeschriebenes SQL möglich, eine Bedingung zu
formulieren, die sich auf ein weiteres, zu dem through-Objekt gejointes
Objekt bezieht?
Michael
–
Michael S.
mailto:[email protected]
http://www.schuerig.de/michael/