Reputation: 27227
I want to set the 'lock' column on a row only if it is not already set. Race conditions are likely and performance is important so this must be done in a single query. I think the solution should look like this:
class MyModel
def lock(worker)
cnt = MyModel.where(id: self.id, lock: nil).update_all(:lock=>worker.name)
cnt == 1
end
end
Does the update_all
method actually return the number of rows effected like it does in DataMapper?
Upvotes: 5
Views: 3438