0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

以下のafter_createのテストを書いていたところ、テストが通りませんでした。

class Hoge < ApplicationRecord
  after_create :change_status

  private

  def change_status
    if status != 'xxx'
        #Fugaをhas_manyで関連づけている
        fuga(status: false)
    end
  end
end

原因

hogeのstatusを更新した後のfugaのstatusをテストしたかったのですが、
Hogeのupdate時にバリデーションエラーが発生していました。
(正確にはバリデーションエラーが発生していたことに気が付かなかった)

hoge.update(status: xxx)

解決方法

updateだとバリデーションエラー時に例外をスローせず、falseを返すので、
update!にしたところ、見事に例外をスローしていましたのでエラーメッセージ通りの対応をして無事解決しました。

(status変わると、必須項目が増えるのでそれらを追加するだけでした)

hoge.update!(status: xxx)

おわりに

小一時間溶かしてしまったのでここで供養しておきます:cry:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?