Ask A Question

Notifications

You’re not receiving notifications from this thread.

Atomic Updates And Performance with ActiveRecord Transactions Discussion

Love it

Reply

sally.transfer(bob, 10000), it is not rollback!

why?

class Account < ApplicationRecord
validates :balance, numericality:{ greater_than: 0}

def withdraw(amount)
update(balance: balance - amount)
end

def deposit(amount)
update(balance: balance + amount)
end

def transfer(recipient, amount)
transaction do
withdraw(amount)
recipient.deposit(amount)
end
end
end

Reply

must use save! or update!

def withdraw(amount)
update!(balance: balance - amount)
end

def deposit(amount)
update!(balance: balance + amount)
end

Reply
Join the discussion
Create an account Log in

Want to stay up-to-date with Ruby on Rails?

Join 86,946+ developers who get early access to new tutorials, screencasts, articles, and more.

    We care about the protection of your data. Read our Privacy Policy.