Je suis novice en matière de transactions ActiveRecord. Dans le code ci-dessous, le premier update_attributes provoque un WARNING : Can't mass-assign protected attributes : account_type_cdx et c'est ok. Mais j'ai été surpris que la ligne suivante self.update_attributes !(:purchased => true) soit exécutée et stockée dans la base de données. Je m'attendais à ce qu'il y ait un ROLLBACK parce que la première ligne a échoué.
Il doit me manquer quelque chose... Des indices ?
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
J'ai suivi les conseils de cet article : http://markdaggett.com/blog/2011/12/01/transactions-in-rails/
Gracias.