概要
Rails アプリでフォームデータを送信するとき、以下のようなエラーが発生しました。
You need to supply at least one validation
原因
このエラーは以下のように validates
メソッドにバリデーションの内容が指定されないと発生します。
class Profile < ApplicationRecord
validates :user_id
end
対処法
このエラーを解決するためには validates
メソッドに適切なバリデーションを指定します。例えば user_id
が一意であることを検証するために uniqueness: true
オプションを指定できます。以下のようにすると、エラーは解消されます。
class Profile < ApplicationRecord
validates :user_id, uniqueness: true
end
まとめ
validates
メソッドを使用する際は、バリデーションの内容を必ず指定します。指定しない場合 You need to supply at least one validation
エラーが発生します。以下は、よく使用されるバリデーションオプションです。
-
presence: true
: 存在を確認します。 -
uniqueness: true
: 一意性を確認します。 -
length: { minimum: 6 }
: 長さの最小値を確認します。 -
format: { with: /\A[a-zA-Z]+\z/ }
: 特定のフォーマットを確認します。 -
numericality: true
: 数値であることを確認します。
また validate
メソッドはカスタムメソッドに対して使用されます。
カスタムバリデーションを定義する場合に利用します。