0
0

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.

Action Text(リッチテキストコンテンツ)に文字数制限をかける際の注意点

Last updated at Posted at 2021-08-07

#はじめに
右も左もわからない未経験エンジニアが書く投稿です。
膨大な勉強量の中で、気になったことや発見などを書いていこうと思います。

今回はRail6より導入されたActionTextでvalidate length: { maximum: }を扱う際の注意点を
メモしようと思います

#開発環境
Rails 6.1.3.2
actiontext (6.1.4)

#本記事を書くまでの経緯
現在、Railsにてポートフォリオ(Q&Aサイト)の制作をしていて
記事作成・編集時にActionTextを使用しています
(Rails6であれば導入自体はとても簡単なのでおすすめです♪)

ActionTextに文字数制限を掛けたくて

models/article.rb
validates :content, length: { maximum: 20000 }

と設定後、テストしてみると文字数が合わないことに気が付きました

初めて使用する機能で、何がどうなってるんだ?と気になり
原因を探ることになったのでメモします

#先に結論
###保存されるデータにはHTMLタグなども含まれます
文字数の制限を掛けたりする時は気をつけましょう!

#本題
####ActiveTextを使用しない場合

「文字数制限かけよう!」となったら

models/article.rb
validates :content, length: { maximum: 100 }

と記述すれば100文字以内で記入することを定められ、DBに登録される際は入力された文字がそのまま保存されます

例) 記事に**「こんにちは」**と書いた時
content: "こんにちは"
と保存される


####ActionTextエディタを使用した場合
action_text_rich_text
というテーブルに保存される事になるのですが、ここで異変が起こります

例)記事にエディタ機能(太文字など)を使わずに**「こんにちは」**と書いた時
body: #<ActionText::Content "<div class=\"trix-conte...">
と保存される

保存される前に binding.pry で確認すると中身は
<div class=\"trix-content\">\n こんにちは\n</div>\n"
となっています

「こんにちは」に追加で37文字入っている事になります

#結果
以上の事からActionTextを使用した際は
100文字書き込んだとしたら、100文字以上になってしまう

もちろん画像を含めたり、エディタ機能を使えば文字数はどんどん増えていきます

この事を頭に入れてからlengthをかけましょう♪

#最後に
勉強を始めたばかりで知識もなく、拙い文章ですがアウトプットすることで頭の中を整理しつつ、どなたかのお役に立てれば良いなと思い投稿させて頂きました。
最後まで見て頂きありがとうございました!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?