楽観的ロック

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'


以上。