LoginSignup
2
2

More than 3 years have passed since last update.

Rails6:ActionTextの初期データをseedを使って投入する

Posted at

はじめに

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側を確認すると改行と太文字が入った初期データを用意することができていると思います。

余談

画像つきの記事って初期データから用意できるのかな。。

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