📝

バリデーション使用時の構文エラー

に公開

Rails Tutorial2 章[toy_app の作成]で単純な構文エラーに遭遇しました。

/app/models/user.rb: syntax error, unexpected label, expecting end
  validates :name presence: true
                          ^~~~~

構文エラー解決前のコードは以下のとおりです。

class User < ApplicationRecord
  has_many :microposts
  validates :name presence: true,
  validates :email presence: true
end

バリデーション使用時の正しい構文はこちらです。

validates :{カラム名}, {ルール名}: {ルールの内容}

複数のカラム、複数のバリデーションを設定する場合

validates :{カラム名 1},{カラム名 2}, {ルール名 1}: {ルールの内容},
{ルール名 2}: {ルールの内容}

修正後のコードはこちらです。

class User < ApplicationRecord
  has_many :microposts
  validates :name, presence: true
  validates :email, presence: true
end

以上で解決しました。

記述する際のポイント

  • :「,」抜け → Syntax Error(構文エラー)
  • :「{}」の過不足(length: maximum:3, {presence: true} というような間違い)→   Argument Error(引数エラー)
GitHubで編集を提案

Discussion