0
3

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.

validatesの使い方

Posted at

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アクションが働いているようです。

以上、もし間違い等あればコメントいただけると幸いです。

0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?