Hou que c'est pas beau, un champs "id" qui peut avoir plusieurs fois la même valeur.
Ce serait mieux de l'appeler "table1_id" histoire de montrer que c'est l'id d'un table1 (quoi qu'un table1 puisse être). D'ailleurs, vu que les table1s on un name, c'est peut-être des people (singulier : person), et ce serait mieux d'appeller la table people du coup, et l'objet modèle Person semblera tout naturel. En plus, comme les table2s sont apparemment des évènements, on pourrait les appeler Event, et ça ferait une table nommée events. On progresse. Du coup, on pourrait même écrire ça : Dans app/models/person.rb class Person has_many :events named_scope :with_events, :include => :events end Dans app/models/event.rb class Event belongs_to :person named_scope :with_person, :include => :person end Du coup tu pourrias écrire des truc fabuleux comme : Person.with_events.find :all Et il ferait la jointure tout seul comme un grand. Mais les conventions sont des trucs chiants qui servent à rien, après tout on peut très bien appeller des choses "truc", "machin", "toto", ou "table1" et ça marche, non ? Quoi, ça rend le code plus lisible en incitant à déclarer son intention, et ça facilite l'écriture de la suite en fournissant des méthodes triviales qui marchent bien ? Ta ta ta, c'est pour les amateurs ça. Vaut mieux nommer ses tables table1, table2, etc., comme ça quand on veut en rajouter une, eh bien on l'appelle tablen+1 et y'a pas besoin de se casser la tête. D'ailleurs, on devrait faire la même chose avec les champs, les appeller champs1, champs2, champs3, etc., sauf les id pour les jointures qu'on appellerait just "id" que ce soit une clef primaire, étrangère, etc. C'est tellement plus fun, c'est comme un puzzle, à chaque fois on a le plaisir de retrouver un gros sac de noeuds et on passe des après-midi super à tout démêler. Michel Belleville 2009/7/13 Renaud Huillet <[email protected]> > > Hello ! > J aie beau chercher, je ne comprends pas ce que je fais de faux dans ce > cas basique: une jointure avec 2 tables: > > def self.jointure > conditions="table1.id = table2.id" > my_results=self.find(:all, :include=>'table2', :conditions=> > [conditions]) > result_details = my_results[0] > for res in result_details.table2 do > logger.debug "nb hits #{res.nb_hits}" > end > return my_results > end > > Les données: > table1: > id name > 1 toto > table2: > id nb_hits log_date > 1 10 2009/01/01 > 1 16 2009/01/02 > > Lors dela jointure, les logs me sortent 2 lignes , jusque la ça va, mais > c est 2 fois la même :( > nb hits 16 > nb hits 16 > > Je craque un peu , a l aide ! > Renaud > -- > Posted via http://www.ruby-forum.com/. > > > > --~--~---------~--~----~------------~-------~--~----~ 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] -~----------~----~----~----~------~----~------~--~---
