Quel relation ActiveRecord utiliser?

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 R., http://atonie.org/sr/

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

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...

On 7/27/07, Simon R. [email protected] wrote:

bien. [aussi utilisé pour évaluer un bien]).
En prenant en compte ces contraintes, quel est la meilleur solution Ã
adopter?

Merci d’avance,


Simon R., http://atonie.org/sr/


Michel B.