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?
Yes, it does in ActiveRecord as in DataMapper
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With