1
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?

More than 3 years have passed since last update.

Ruby on Rails save時にrollbackする原因がわからないとき。

Posted at

はじめに

今回はrailsでsave時にrollbackする原因がわからないときの対処について学習してきます。

現在ユーザーがメモを登録できるサイトを作成中。

今回やりたい事
fromから登録(note)を送ってDBに保存(ユーザーに紐づいた)してviewに表示させる

苦戦したところ
登録した際にrollbackしてしまう。

@note.save!と記述すると下記のエラーが出たので検索

ActiveRecord::RecordInvalid: Validation failed: User must exist

要約するとuserモデルに値が入ってなくてバリデーションで弾かれていたみたい

解決策

optional: trueを記載

note.rb
class Note < ApplicationRecord
  belongs_to :user,optional: true
  validates :title, presence: true
  validates :explanation, presence: true
end

optional: trueとはなにか?

Railsのbelongs_toに指定できるoptional: trueとは?
belongs_toの外部キーのnilを許可するというもの

参考

しかし、

rollbackは解消されたが投稿したタイトルが全部0で表示されてしまいす。

スクリーンショット 2020-10-18 22.00.33.png

原因
マイグレーションファイルのtitleのデータ型がintegerになっていたからでした。
text型に直してrails db:migration:resetをして解決!

1
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
1
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?