Techioz Blog

Paper_trail をアクション テキストで動作させるにはどうすればよいですか?

概要

Paper Trail Gem を、body というテキスト列を持つ基本モデルの Article でうまくセットアップしました。ただし、アプリケーションにアクション テキストを実装し、記事モデルから列本文を削除した後、Paper Trail で関連する本文列の変更を追跡できなくなります。どうすればこれを機能させることができますか?

免責事項: 私は Rails の初心者です。

記事.rb

...
  has_rich_text :body
  has_paper_trail
...

記事スキーマ (:body 列削除後)

  create_table "articles", force: :cascade do |t|
    t.string "title"
    t.string "slug"
    t.datetime "archived_at"
    t.datetime "published_at"
    ...
  end

アクションテキストスキーマ

create_table "action_text_rich_texts", force: :cascade do |t|
    t.string "name", null: false
    t.text "body"
    t.string "record_type", null: false
    t.bigint "record_id", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["record_type", "record_id", "name"], name: "index_action_text_rich_texts_uniqueness", unique: true
  end

以前と同じ機能をアプリに戻して、記事の本文に加えられた変更を確認したいと考えています。例えば。誰かが文を追加したり、単語を削除したりしました。

解決策

答えを組み合わせるとうまくいきました。

# frozen_string_literal: true

ActiveSupport.on_load(:action_text_rich_text) do
  ActionText::RichText.class_eval do
    has_paper_trail
  end
end

lib/rich_text_paper_trail.rb でこのファイルがロードされていることを確認してください。たとえば、明示的に要求することで: require ‘rich_text_paper_trail’