Это ошибка в Vestal Versions или я делаю что-то не так?

Я думаю, что, возможно, обнаружил ошибку в Vestal Versions ( http://github.com/laserlemon/vestal_versions) - похоже, revert_toПоведение зависит от того, что я сделал в прошлом с тем же объектом. Вот пример:

>> a = Annotation.find(1384)
=> #<Annotation id: 1384, body: "Just hanging out -- \"playing possum\" -- at the stor...", last_updated_by_id: 3, created_by_id: 3, song_id: 30, deleted_at: nil, created_at: "2009-09-06 01:56:55", updated_at: "2009-10-27 22:02:35", referent: "in the spot playing possum\nDebating my destination,...", vote_score: 0>
>> a.revert_to(9)
=> 9
>> a.body
=> #<RDiscount:0x21cf7bc @filter_styles=true, @smart=true, @fold_lines=nil, @filter_html=nil, @text="Just hanging out -- \"playing possum\" -- at the store, lacing up the new Nikes, trying to decide where to go for dinner">


>> a = Annotation.find(1384)
=> #<Annotation id: 1384, body: "Just hanging out -- \"playing possum\" -- at the stor...", last_updated_by_id: 3, created_by_id: 3, song_id: 30, deleted_at: nil, created_at: "2009-09-06 01:56:55", updated_at: "2009-10-27 22:02:35", referent: "in the spot playing possum\nDebating my destination,...", vote_score: 0>
>> a.revert_to(8)
=> 8
>> a.body
=> #<RDiscount:0x21b5a10 @filter_styles=true, @smart=true, @fold_lines=nil, @filter_html=nil, @text="I.e. just hanging out -- \"playing possum\" -- in the living room, lacing up the new Nikes, trying to decide where to go for dinner">
>> a.revert_to(:last)
=> 11
>> a.revert_to(9)
=> 9
>> a.body
=> #<RDiscount:0x21b5a10 @filter_styles=true, @smart=true, @fold_lines=nil, @filter_html=nil, @text="I.e. just hanging out -- \"playing possum\" -- in the living room, lacing up the new Nikes, trying to decide where to go for dinner">

Т.е. если бы я revert_to(9) из только что загруженной аннотации поле body содержит объект RDiscount, текст которого начинается с "Просто вывешивать - \" играю опоссума \" - в магазине" (что и было в теле версии 9)

Однако, если я вернусь к revert_to(8) из только что загруженной аннотации проверьте тело аннотации, revert_to(:last), а также revert_to(9)тело аннотации в версии 9 будет неправильным (оно будет соответствовать телу аннотации версии 8)

Какие-нибудь мысли?

1 ответ

Решение

Это не ошибка в vestal_versions, это рельсы, не перезагружающие вашу ассоциацию после изменения версии. Предполагая ваш Annotation держит идентификатор вашего RDiscount происходит следующее:

  1. вы получаете Annotation "а" с RDiscount идентификатор х.
  2. вы возвращаете "а" к предыдущей версии, RDiscount id меняется на y.
  3. ты звонишь a.body, заставляя рельсы загружать RDiscount объект с идентификатором y.
  4. вы возвращаете "а" в :last, RDiscount id снова меняется на x.
  5. ты звонишь a.body снова, но рельсы уже загрузили RDiscount объект и вернет этот объект вместо.
Другие вопросы по тегам