2011-12-20 17 views
0

私はとListCellsを作成し、更新し、おそらく破棄するコントローラのいずれかにgenerateメソッドを持っています。どちらもListを指すlist_idを持っています。 ListCellを作成している間、ListColumnsが変更されないようにする必要があります。Rails/PostgreSQL - 属性に基づいて行をロックしていますか?

ただし、別のユーザーが別のリストでgenerateを呼び出すと、データの生成に時間がかかることがあるので、そのリストのListColumnsとListCellsを作成してください。

したがって、トランザクションが完了するまで、特定のlist_idのListColumnを追加できないように、テーブルをロックする方法はありますか?

ありがとうございます!

答えて

2

listテーブル行自体をロックとして使用します。単に排他モードでlistから行を選択します。

select list.list_id from list where list.list_id = ? for update 

あなたの方法の開始時に同じlist_id

+0

で、他の実行をブロックすることをやって、実際にその行を更新するつもりはない場合でも、 + 1/Accepted - ありがとうございました!これはまさに私が必要としていたものです! –

+0

@Topher:BTW、ARには、 '' lock! '](http://api.rubyonrails.org/classes/ActiveRecord/Locking/Pessimistic.html#method-lock-21)メソッドがあります。 ...更新のため。 –

+0

@muistooshort - 確かに、私は私の検索でそれが私が使用していることがわかった。しかし、それを指摘してくれてありがとう:-) –

関連する問題