bl0b
bl0b

Reputation: 936

Pessimistic locking fails

I have the following code in my controller:

Item.transaction do
  item = JobDistribution.lock(true).find(params[:id])
  item.update_attributes(status: JobDistribution.statuses[:processing])
  respond_to do |format|
    format.json { render :json => "object processing", status: :success }
  end
end

but when I run the code I'm getting the error:

Attempted to update a stale object: Item

I don't understand why, I followed the rails documentation.

Upvotes: 1

Views: 212

Answers (1)

smathy
smathy

Reputation: 27961

lock_version is for optimistic locking, you're also using pessimistic locking with chaining your find from the lock. Rails is getting confused between the two - pick one or the other.

Upvotes: 3

Related Questions