ume

rails7 データベース string型とtext型の文字制限のバリデーションについて

前書き

以下のnameカラム(string型)とdscriptionカラム(text型)にlengthのバリデーションは必要?また必要なら何文字で設定するのがいいの?という2つの疑問が湧いたので忘却録として記事に残します ↓migrationファイル

結論

⇨人それぞれの用途でlengthのバリデーションの有無や文字数の制限を設定する。

そもそもstringとtextの違いは?

データ型 データベースに登録できる文字数
string 255文字まで
text 上限なし
それぞれの用途
  • string⇨一言入力したいときなどに使う。(名前、電話番号、住所など).
    バリデーション必要.
    理由 おかしな文章を登録できないようにするため(ポスグレの場合).
    ポスグレでstring型で255文字を超えて登録しようとすると256文字以降の文字は登録されない。

例256文字を登録しようとした時

省略
ありがとうございます

上記のありがとうございますの「す」が256文字目だとすると「ありがとうございま」までしかポスグレには登録されない。

  • text⇨長文投稿したいときなどに使う。(コメント、ブログなど)

バリデーション必要なし 下記のサイトを見るとデータ型にあまり違いがないので長文の文字列を登録する際場合はtext型でバリデーションなしで問題ないと思います。 teratail.com

www.postgresql.jp

まとめ

  • 文字制限したいカラムにはstring型を使う。

  • 文字制限する必要がない場合はtext型を使う

参考情報

qiita.com