Le 10 avril 2009 16:31, Cyril M. [email protected] a écrit :
Comme dis précédement :
/app/models/update.rb:43:in `do_update’
Voici la seule ligne qui te suffit et où se trouve la ligne.
Non, je suis plutôt d’accord avec ook? c’est dans Wiki#update_wiki
Ton log ne donne pas les lignes 
Visiblement on a :
Update < AR::B, BaselineProcess < AR::B, Wiki < AR::B
Update.belongs_to :wiki, Update.belongs_to :wiki
BaselineProcess.belongs_to :wiki
Update#do_update appelle (via un proxy, mais ça importe peu)
la méthode Wiki#update_wiki
Au début de la méthode, on a :
bp = update.baseline_process
logger.info(“Starting update of wiki #{self.title} from baseline
process #{self.baseline_process.title} (#{self.baseline_process.id})
to #{bp.title} (#{bp.id})”)
soit bp = update.baseline_process vaut nil
ou self.baseline_process vaut nil.
Du coup la ligne 118 serait l’appel au logger.
Ceci dit, dans Update#do_update, avant d’arriver
à la ligne :
self.wiki.update_wiki(self)
…il y a déjà des self.baseline_process.title et self.wiki.title
qui passent bien. Ce qui voudrait dire que l’association
Update → BaselineProcess est ok, Update → Wiki est ok,
mais pas Wiki → BaselineProcess
Donc l’erreur proviendrait de :
self.baseline_process.title dans Wiki#update_wiki dans le
logger.info(…)
précédemment
cité.
À part ça, je suis d’accord avec Guillaume, appeler un modèle Update
est une très mauvaise idée, tu as Wiki.has_many :updates
donc tu fais des wiki.updates, mais ça ressemble trop
à AR::B#update, c’est un truc à se faire avoir un de ces 4,
d’ailleurs quand on voit le code avec des :
update.update_attributes()
Ceci dit, on peut dire que le code est globalement affreux.
– Jean-François.
–
http://twitter.com/underflow_