Railscasts - Optimistic Locking
簡単すぎる。
まぁ悲観的ロック(select for update)も簡単なようですが
楽観的ロックでたいていこと足りそう。
書き方
generate
script/generate migration add_products_lock_version
db/migrateへ追記
add_column :products, :lock_version, :integer, :default => 0, :null => false remove_column :products, :lock_version
rake
rake db:migrate
viewへ追記
<%= f.hidden_field :lock_version -%>
controllerでrescue
rescue ActiveRecord::StaleObjectError @product.reload render :action => 'confilict'
以上。