LoginSignup
0
0

More than 1 year has passed since last update.

【Rails】データ保存時にrollbackされて原因がわからない時

Posted at

Railsで開発している時に、データ保存をしたはずなのに、rollebackされてその原因が分からないことがあるかと思います。
私の場合、createメソッドでsaveしている状況ですが、パラメータは正しく渡っており、エラーメッセージも表示されていないのにデータベースには保存されていませんでした。

結論としては、save!と入力することでエラーの原因が分かります。
やり方としては、現在のcreateアクションに記載されているsaveに!を付けるだけです。

item_controller.rb
  def create
    @item = Item.new(items_params)
    if @item.save
      flash[:success] = "商品を登録しました"
      redirect_to items_path
    else
      flash.now[:danger] = "登録に失敗しました"
      render("admin/items/new")
     end
  end    

上記は新規商品を登録するための記述です。このsaveの部分をsave!と変更すればOKです。
save!とした状態で実際に何か商品を登録しようとすると、ターミナル上にエラーメッセージが表示されます。
私の場合は、以下のメッセージが表示され、メーカー名が空白になっていたのでエラーになっていたと分かりました。

ターミナル
ActiveRecord::RecordInvalid: Validation failed: Content can't be blank, Maker can't be blank

エラーメッセージは表示されないのにsaveできない時は、save!としてみてエラー内容を表示させて原因を突き止めてみることが大切ですね。

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