Я пытаюсь реализовать Оптимистическую блокировку для состояния гонки.Для этого я добавил дополнительный столбец lock_version
в Продукте: модель через миграцию.И переходя на attr_accessible :lock_version
.Я могу обновить модель через консоль rails, однако через View я не могу обновить модель.
Product: Новое поле модели:
# lock_version :integer(4) default(0), not null
Передача lock_version в Product:Модель:
attr_accessible :lock_version
Передать его как скрытое поле при просмотре / редактировании:
form.hidden_field :lock_version
Продукт: Контроллер модели:
def update
...
@product.update_with_conflict_validation(params[:car])
end
Внутри продукта: Модель:
def update_with_conflict_validation(*args)
update_attributes(*args)
rescue ActiveRecord::StaleObjectError
errors.add :base, "This record changed while you are editing."
false
end
Я использую версию Ruby
Loading development environment (Rails 3.2.22.4)
irb(main):001:0> RUBY_VERSION
=> "1.9.3"
Пожалуйста, дайте мне знать, почему я не могу обновить модель через UI / View, но могу обновить через консоль rails.
Ссылка: https://www.youtube.com/watch?v=dcfP37d8-ZI