Irgendwie bekomme ich diese immer freitags.Warum funktioniert das optimistische Sperren von ActiveRecord nur einmal pro Zeile?
Meine frühere Frage war in Bezug auf das gleiche Problem, aber ich kann jetzt schmale Dinge ein wenig nach unten:
Ich habe mit dieser ganzen Tag spielen und versuchen, einen Sinn zu machen. Ich habe eine Tabelle mit einem lock_version colum, so angegeben:
add_column :jobs, :lock_version, :integer, :default=>0
Und ich etwas tun, wie folgt aus:
foo = job.create!
first = Job.find(foo.id)
second = Job.find(foo.id)
ich überprüfen dann, dass erste und zweite auf das gleiche Objekt beziehen - ihre IDs sind die Das gleiche und ich sehe diese Zeile in der Datenbank mit dem mysql-Befehlszeilentool.
first.some_attribute_field = 'first'
second.some_attribute_field = 'second'
first.save
second.save
kein Problem so weit. Ich bekomme eine ActiveRecord :: StaleObjectError-Ausnahme korrekt. JEDOCH:
first = Job.find(foo.id)
second = Job.find(foo.id)
first.some_attribute_field = 'first'
second.some_attribute_field = 'second'
first.save
second.save
... und nichts passiert. Es stellt sich heraus, dass das einzige Mal, wenn ich das richtige (ausgelöste Ausnahme) Verhalten bekomme, ist, wenn erste und zweite eine lock_version von 0 haben. Nach dem ersten Speichern ist es NIE wieder 0. Was in aller Welt ist damit los?
Ich bin mit Rubin 1.8.6 und aktiven Datensatz 2.2.2
Dank ...
Vielleicht möchten Sie 'schmutzig' und 'Änderungen' in der API nachschlagen (gotapi.com ist was ich verwende). Es tut nichts, weil es nichts gibt * zu * tun. – Sai