前書き
以下のnameカラム(string型)とdscriptionカラム(text型)にlengthのバリデーションは必要?また必要なら何文字で設定するのがいいの?という2つの疑問が湧いたので忘却録として記事に残します ↓migrationファイル
結論
⇨人それぞれの用途でlengthのバリデーションの有無や文字数の制限を設定する。
そもそもstringとtextの違いは?
データ型 | データベースに登録できる文字数 |
---|---|
string | 255文字まで |
text | 上限なし |
それぞれの用途
- string⇨一言入力したいときなどに使う。(名前、電話番号、住所など).
バリデーション必要.
理由 おかしな文章を登録できないようにするため(ポスグレの場合).
ポスグレでstring型で255文字を超えて登録しようとすると256文字以降の文字は登録されない。
例256文字を登録しようとした時
省略 ありがとうございます
上記のありがとうございますの「す」が256文字目だとすると「ありがとうございま」までしかポスグレには登録されない。
- text⇨長文投稿したいときなどに使う。(コメント、ブログなど)
バリデーション必要なし 下記のサイトを見るとデータ型にあまり違いがないので長文の文字列を登録する際場合はtext型でバリデーションなしで問題ないと思います。 teratail.com
まとめ
文字制限したいカラムにはstring型を使う。
文字制限する必要がない場合はtext型を使う