はじめに
Rails6から使えるようになったActionTextを使ってみたのですが、初期データを入れるときにつまずいてしまったので、そのときのことを記事にしようと思いました。
前提
Rails:6.0.3.2
使うモデル名:Post
カラム:title
リッチテキストのフィールド名:content
seedの投入
まず簡単にpostをいくつか作る
15.times do
Post.create!(title: Faker::Book.unique.title)
end
その後にaction_text_rich_texts
テーブルにPostと関連づけるデータを投入することで、ActionTextの初期データを入れることができます。
実際にはこんな感じになるかと思います。
Post.all.each do |post|
ActionText::RichText.create!(record_type: 'Post', record_id: post.id, name: 'content', body: Faker::Lorem.sentence)
end
record_typeにはActionTextを使っているモデル名、recor_idはpostのid、nameにはリッチテキストフィールド名、bodyには実際にいれたい文面をいれるように設定してください。
最後に投入して完成です。
rails db:seed
これでview側に表示できるようにすれば投入したデータが表示されてるかと思います。
おまけ:ActionTextから投稿したみたいに改行、太文字を設定する
初期データに改行、太文字を入れたい場合は以下のように設定します。
content = '<div class="trix-content">
<div><strong>ここが太文字</strong>です。<br><br>ここの文章は改行されています</div>
</div>'
rich = ActionText::RichText.last
rich.update(body: content)
これでview側を確認すると改行と太文字が入った初期データを用意することができていると思います。
余談
画像つきの記事って初期データから用意できるのかな。。