La réponse c'est:
class Author < ActiveRecord::Base
has_many :authorships
has_many :books, :through => :authorships
end
class Authorship < ActiveRecord::Base
belongs_to :author
belongs_to :book
end
class Book < ActiveRecord::Base
has_many :authorships
has_many :authors, :through => :authorships
end
@author = Author.find :first
@author.authorships.collect { |a| a.book } # selects all books that
the author's authorships belong to.
@author.books # selects all books by
using the Authorship join model
Un peu de saines lectures :
http://ar.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
<chantonne>
La super doc de Ruby
Il faut bien la lire aussi
On y trouve des tas de choses
Qui font voir les rails en rose...
</chantonne>
On 7/27/07, Simon Rozet <[EMAIL PROTECTED]> wrote:
>
> Bonjour,
>
> J'ai un table customers et un table jobs contenant les travaux réalisés.
> Je pourrais utiliser un simple has_many et belongs_to, mais
> malheureusement c'est plus compliqué que ca.
>
> Les jobs sont en fait des expertises immobilières (un rapport
> détaillant l'état d'un bien avant qu'il soit loué pour pouvoir ensuite
> chiffrer les dégats engendrés par le locataire lorsqu'il quitte le
> bien. [aussi utilisé pour évaluer un bien]).
>
> Il y a deux type de jobs :
> - EXP (expertise), pour un client de n'importe quel type
> - ELE/ELS (état des lieu d'entrée/sortie) se rapportant lui à un
> client de type propriétaire et un client de type locataire
>
> Mais, le client john pourrait très bien être de type propriétaire sur
> l'ELE id=56 mais de type "n'importe quoi" sur l'EXP id=3
> Donc il n'est pas question d'avoir un champ "kind" sur la table customers.
>
> En prenant en compte ces contraintes, quel est la meilleur solution à
> adopter?
>
> Merci d'avance,
>
> --
> Simon Rozet, http://atonie.org/sr/
>
> >
>
--
Michel Belleville
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---