ActiveRecord トランザクションは初めてです。以下のコードでは、最初の update_attributes によって WARNING: Can't mass-assign protected attributes: account_type_cdx が発生し、問題ありません。しかし、次の行 self.update_attributes!(:purchased => true) が実行され、DB に格納されていることに驚きました。最初のものが失敗したため、ロールバックすることを期待していました。
私は何かが欠けているに違いない...ヒントはありますか?
def complete_purchase(current_user_id, plan_name)
Rails.logger.debug "COMPLETE PURCHASE"
user = User.find(current_user_id)
ActiveRecord::Base.transaction do
user.update_attributes!(:account_type_cdx => plan_name.to_sym)
self.update_attributes!(:purchased => true)
end
end
この投稿のアドバイスに従いました: http://markdaggett.com/blog/2011/12/01/transactions-in-rails/
ありがとう。