Action Textとは?
Rails6から登場した機能です。
インストール
1 |
rails action_text:install |
インストールすると下記の記述が追加されます。
app/javascript/packs
1 2 |
require("trix") require("@rails/actiontext") |
trix
WYSIWYGを実現するリッチテキストエディタになります。
マイグレーションファイル
下記のようにActionTextを実装する上で必須の3つのテーブルが追加されます。下記のテーブルにWYSIWYGデータが格納されます。
- active_storage_blobs
-
active_storage_attachmentsaction_text_rich_texts
action_text_rich_texts
アクションテキストリッチテキストが格納されます。has_rich_textというメソッドによって自分たちが用意したデータ登録用のテーブルと紐づけることになります。
なお、通常の関連づけであれば関連づける先のテーブルの単数型にidをつけた(user_id等)が必要になるのですが、このテーブルの関連づけは下記2つのカラムの値で関連づけを動的に行っています。これにより複数の別のテーブルとの関連づけを少ないコードの記述で行うことが可能になるのです。これをポリモーフィックアソシエーションと呼びます。
1 2 |
t.string "record_type", null: false t.bigint "record_id", null: false |
active_storage_attachments
多:多の関連づけの仲介をするテーブルです。action_text_rich_textsテーブルとaction_storage_blobsのそれぞれに関連づいています。このテーブルもポリモーフィックアソシエーションで関連づいています。
active_storage_blobs
画像ファイル等のバイナリファイルを格納するテーブルです。
CSS
views
「app/views/active_storage/blobs」に「_blob.html.erb」が追加されます。Trixエディタでは画像をドラッグアンドドロップでレンダリングできますが、画像をレンダリングする際に使用されるerbになります。
image_processingの導入
actionTextを導入する際に必須となるGemパッケージとして「image_processing」があります。Gemfileを開いた際にコメントアウトされている下記の行のコメントを解除します。
1 2 |
# Use Active Storage variant gem 'image_processing', '~> 1.2' |
この記事へのコメントはありません。