どういうわけか、私はいつも金曜日にこれらを手に入れます。
以前の質問は同じ問題に関するものでしたが、今では少し絞り込むことができます。
私はこれを理解しようと一日中遊んでいます。次のように指定されたlock_version列を持つテーブルがあります。
add_column :jobs, :lock_version, :integer, :default=>0
そして、私はこのようなことをします:
foo = job.create!
first = Job.find(foo.id)
second = Job.find(foo.id)
次に、1番目と2番目が同じオブジェクトを参照していることを確認します。それらのIDは同じであり、mysqlコマンドラインツールを使用してデータベースにその行が表示されます。
first.some_attribute_field = 'first'
second.some_attribute_field = 'second'
first.save
second.save
今のところ問題ありません。ActiveRecord::StaleObjectError例外が正しく発生します。 ただし:
first = Job.find(foo.id)
second = Job.find(foo.id)
first.some_attribute_field = 'first'
second.some_attribute_field = 'second'
first.save
second.save
...そして何も起こりません。正しい(スローされた例外)動作が得られるのは、最初と2番目のlock_versionが0の場合だけです。ただし、最初の保存後は、再び0になることはありません。いったいこれで何が起きているのでしょうか?
私はruby1.8.6とアクティブレコード2.2.2を使用しています
ありがとう...