## わからないこと、エラー内容
railsでトランザクションのロールバックができているか試したいのですが、
エディタ上での記述はこんな感じです。
def update ActiveRecord::Base.transaction do # アカウント情報の更新 if @ad_agency.update(account_update_params(:ad_agency)) write_update_log @ad_agency.previous_changes end # アカウント関連情報の更新 if @ad_agency.ad_agency_info.update(account_info_update_params(:ad_agency_info)) write_update_log @ad_agency.ad_agency_info.previous_changes end # 更新時のエラー確認 raise if @ad_agency.errors.present? || @ad_agency.ad_agency_info.errors.present? redirect_to :ad_agency_index end
これをrails console
にて試すとエラーが出ます。
[1] pry(main)> ApplicationRecord.transaction do [1] pry(main)* ad_agency.save! [1] pry(main)* ad_agency_info.save! [1] pry(main)* end [writable] (0.5ms) SET NAMES utf8 COLLATE utf8_general_ci, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 [writable] (0.2ms) BEGIN [writable] (0.2ms) ROLLBACK NameError: undefined local variable or method `ad_agency' for main:Object from (pry):2:in `block in <main>'
ad_agency.saveという書き方は間違っているのでしょうか??
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/13 09:56
2020/07/13 10:02
2020/07/13 10:18
2020/07/13 10:20
2020/07/14 01:59