validatesの使い方
validatesの使い方
railsにてアプリケーション作成中でつまずいた箇所になるのでメモ。
こちらの記事を参考にさせていただきました。
https://qiita.com/clbcl226/items/af336ff06bfba4dacfd9
今回は長さの指定のみでしたが、他にもvalideatesの種類は多数あるので、
随時調べて行きます。
今回使用したvalidates
validates :カラム名, presence: true
→指定したカラムが空の場合にバリデーションをかける。
#長さの下限を2文字に設定→minimum
validates :カラム, length: { minimum: 2 }
#長さの範囲を2-50文字→in ..
validates :カラム, length: { in: 2..50 }
#長さを5文字に指定→is
validates :カラム, length: { is: 5 }
devise使用時の注意
今回、ログイン機能実装にdeviseを用いました。
その際Usersテーブル内のnameとpasswordを入力し、新規登録とログイン。
ログイン後に同じusersテーブル内にあるintroductionカラムにvalidatesをかけました。(以下)
validates :introduction, presence: true, length: {maximum: 50}
ここでpresence: trueとしてしまうとログイン時でもvalidatesがかかってしまい、
ログイン機能が動かなくなってしまいました。
なのでこちらを、presence: falseに変更
→空でも問題ないということなので、ログインも無事可能になりました。
ログインに影響出ないようにvalidatesするには
introductionにもpresenceのvalidatesをかける場合は、
validates :introduction, presence: true,
length, { maximum: 50 }, on: :update
もしくは、
with_options on: :update do
validates :introduction, presence: true,
length: {maximum: 50}
end
on: :updateと指定することでupdateアクション時のみのvalidatesとすることが可能。
※deviseのログイン時はデフォルトでcreateアクションが働いているようです。
以上、もし間違い等あればコメントいただけると幸いです。
Author And Source
この問題について(validatesの使い方), 我々は、より多くの情報をここで見つけました https://qiita.com/yuuyas222/items/6e4a9cb64aad9842d552著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .