RailsでTEXT型を越えるテキスト(MEDIUMTEXT/LOGTEXT)を扱う

はじめに

MySQL(MariaDB)にはTEXT型と呼ばれる65,535バイトまでの文字列を扱う型がございます。たいていのアプリはこちらを指定することで、ほとんどの文章を管理できるのではないかと思います。

しかしながら、少しリッチなブログなどを開発しようとすると、文字数の上限に物足りなさを感じるのではないでしょうか。そうなったときに利用したくなるのが、MEDIUMTEXT型やLONGTEXT型といった、より大きな型となります。

実装

RailsでMEDIUMTEXT型やLONGTEXT型を扱うには、DBのmigrationファイルにlimitオプションを指定することで実現できます。MEDIUMTEXTやLONGTEXTといった、型の名前を識別子としてファイルに記述することはありません。

上記の通り数値として値を渡す為、指定した数値によって、以下のレンジからMySQL上ではカラムの型が決定されます。

  • TINYTEXT型: 1-255
  • TEXT型: 256-65535
  • MEDIUMTEXT型: 65536-16777215
  • LONGTEXT型: 16777216-4294967295

以下はlimit: 16777215を指定した場合です。

MariaDB [foo_development]> show columns from posts;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| uuid | varchar(255) | NO | PRI | NULL | |
| body | mediumtext | NO | | NULL | |

ちゃんとデータベース側ではmediumtextとして指定されていることが確認できます。

Rails

Posted by poison