Non non, mais je n'oubliais pas le .save dans mes tests... Mais ça ne fonctionnes pas
Le fait est que le path_was est modifié en meme temps que path lui meme... probablement donc que rails ne vois pas le changement donc n'effectue pas la mise à jour.
Edit: c'est un truc de malade ce bug... Il ne subsistes aucun path égal à ((7,6),(5,4)), d'ou rails me sort encore cette valeur?
Edit²: Si j'utilises "Hunting.update(id, {:path => path})" dans ma méthode 'one_step_forward', ça fonctionnes impeccablement..."
Le fait est que le path_was est modifié en meme temps que path lui meme... probablement donc que rails ne vois pas le changement donc n'effectue pas la mise à jour.
ruby-1.9.3-rc1 :001 > @hunting = Hunting.find(1)
Hunting Load (25.3ms) SELECT "huntings".* FROM "huntings" WHERE "huntings"."id" = $1 LIMIT 1 [["id", 1]]
=> #<Hunting id: 1, path: "((7,6),(5,4))", created_at: "2011-10-02 16:02:11", updated_at: "2011-10-02 18:08:45">
ruby-1.9.3-rc1 :002 > @hunting.one_step_forward!
=> #<Point:0xa64c9b8 @x=7, @y=6>
ruby-1.9.3-rc1 :003 > @hunting.changed
=> ["path"]
ruby-1.9.3-rc1 :004 > @hunting.changes
=> {"path"=>[#<Path:0xa64c800 @points=[#<Point:0xa64c8f0 @x=5, @y=4>]>, #<Path:0x9466e38 @points=[#<Point:0xa64c8f0 @x=5, @y=4>]>]}
ruby-1.9.3-rc1 :005 > @hunting.save
(0.2ms) BEGIN
(0.7ms) UPDATE "huntings" SET "path" = '((7,6),(5,4))', "updated_at" = '2011-10-03 04:49:44.670416' WHERE "huntings"."id" = 1
(29.4ms) COMMIT
Edit: c'est un truc de malade ce bug... Il ne subsistes aucun path égal à ((7,6),(5,4)), d'ou rails me sort encore cette valeur?
ruby-1.9.3-rc1 :071 > @hunting = Hunting.find(1)
Hunting Load (0.5ms) SELECT "huntings".* FROM "huntings" WHERE "huntings"."id" = $1 LIMIT 1 [["id", 1]]
=> #<Hunting id: 1, path: "((7,6),(5,4))", created_at: "2011-10-02 16:02:11", updated_at: "2011-10-03 19:16:44">
ruby-1.9.3-rc1 :072 > @hunting.path
=> ((7,6),(5,4))
ruby-1.9.3-rc1 :073 > @hunting.changed?
=> false
ruby-1.9.3-rc1 :074 > @hunting.changes
=> {}
ruby-1.9.3-rc1 :075 > @hunting.one_step_forward
=> (7,6)
ruby-1.9.3-rc1 :076 > @hunting.path
=> ((5,4))
ruby-1.9.3-rc1 :077 > @hunting.changed?
=> true
ruby-1.9.3-rc1 :078 > @hunting.changes
=> {"path"=>[((5,4)), ((5,4))]}
ruby-1.9.3-rc1 :079 > @hunting.changed_attributes
=> {"path"=>((5,4))}
ruby-1.9.3-rc1 :080 > @hunting.save
(0.2ms) BEGIN
(0.5ms) UPDATE "huntings" SET "path" = '((7,6),(5,4))', "updated_at" = '2011-10-03 19:30:15.467748' WHERE "huntings"."id" = 1
(23.5ms) COMMIT
=> true
Edit²: Si j'utilises "Hunting.update(id, {:path => path})" dans ma méthode 'one_step_forward', ça fonctionnes impeccablement..."