Почему-то я всегда получаю их по пятницам.
Мой предыдущий вопрос касался той же проблемы, но теперь я могу немного сузить круг вопросов:
Я играл с этим весь день, пытаясь понять это. У меня есть таблица со столбцом lock_version, указанная таким образом:
add_column :jobs, :lock_version, :integer, :default=>0
И я делаю что-то вроде этого:
foo = job.create!
first = Job.find(foo.id)
second = Job.find(foo.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
... и ничего не происходит. Оказывается, что единственное время, когда я получаю правильное поведение (сгенерированное исключение), это когда первый и второй имеют значение lock_version, равное 0. После первого сохранения, однако, это снова НИКОГДА 0. Что с этим случилось?
Я использую ruby 1.8.6 и активную запись 2.2.2
Спасибо ... * * 1023