我正在尝试对比赛条件实施乐观锁定。为此,我在产品:通过迁移进行的模型中添加了额外的列lock_version
。并通过attr_accessible :lock_version
传递。我可以通过Rails控制台更新模型,但是,通过View我不能更新模型。
产品:型号的新字段:
# lock_version :integer(4) default(0), not null
在产品:模型中传递lock_version:
attr_accessible :lock_version
在“查看/编辑”中将其作为hidden_field传递:
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控制台更新。