.createと.create!の違いとは

バリデーションの理解

オブジェクトがデータベースに保存される前に、そのデータが正しいかどうか(こちらが設定したフィルタを通過するかどうか)を検証する仕組みをバリデーションという

 

!の有無による違い

createメソッドを実行する時に、バリデーションを通らなかった場合に挙動が異なる

 !有:ActiveRecordエラーが表示され、次のアクションに進めない

 !無:次のアクションに進みはするが、データベースにデータが登録されない

  →saveとupdateは「false」を返し、createはオブジェクトをそのまま返す

 

バリデーションの設定

app > models > application_record.rb

 validates :カラム名, 条件

 

バリデーションの種類(一例)

空でないこと:presence: true

空であること:absence:true

長さ:length: { minimum: 1 } 1文字以上

   length: { maximum: 10 } 10文字以下

   length: { in: 1..10 } 1文字以上10文字以下

   length: { is: 7 } 7文字のみ