Bonjour,
On 16 sep, 22:06, Meshak <[email protected]> wrote: > Je pencherai pour un problème de ressources / performances pour > plusieurs raisons : > - l'aspect aléatoire > - le "ActionView::TemplateError" > - "self.attributes[...]" qui délègue en réalité à > "self.read_attribute(...)" > - le fait qu'il y ait un has_many de has_many de 7000 > résultats... :-) > > Deux petites questions : > - quelle version de Rails ? 2.3.2 > - lors d'un rendu, tes logs sont-ils polués par N fois le même type > de requête ? Oui et non. Lorsque j'ai rencontré le pb pour la première fois, en effet, mes logs étaient remplis de SELECT "bodies".* FROM "bodies" INNER JOIN "bodies_encounters" ON "bodies".id = "bodies_encounters".body_id WHERE (("bodies_encounters".encounter_id = 14275)) J'ai suspecté alors un problème de surcharge, et j'ai transformé mon @encounters = Encounter.all en @encounters = Encounter.all(:include => :bodies) mais cela n'a pas changé grand chose : ça plante toujours avec la version originale de mon code. au lieu de planter à la suite d'un select, ça plante pendant le rendu (à un endroit indéterminé...) Par contre, j'avais le même type d'erreur (plantage sur la méthode designation avec cascade sur les dates) à un autre endroit de mon application, et ce plantage a disparu quand j'ai ajouté les (:include => :bodies) > Même si je me trompe, les points suivants ne feront pas de mal : > - vérifier la relation entre Body et Encounters, on est bien au > final sur du 1-N ? Non. on est sur du N-N (une Encounter contient 2 Bodies et un Body peut être dans N Encounters) class Body < ActiveRecord::Base has_many :bodies_encounters has_many :encounters, :through => :bodies_encounters class Encounter < ActiveRecord::Base has_many :bodies_encounters has_many :bodies, :through => :bodies_encounters > - vérifier que tes "include" sont bien en place, ex : > Body.all(:include => { :bodies_encounters => :encounters }) Pour les .all oui. > - éviter "self.attributes" Grande question : pourquoi ? > Note : "b1.class.to_s.eql?('Planet')" peut s'écrire "b1.instance_of? > (Planet)" (voir aussi la méthode "is_a?") Merci ! --~--~---------~--~----~------------~-------~--~----~ 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] -~----------~----~----~----~------~----~------~--~---
