如何让 Paper_trail 与 Action Text 一起使用?

Mar*_*gos 6 ruby ruby-on-rails paper-trail-gem trix

我用Paper Trail Gem很好地设置了我的基本模型 Article,其中有一个text名为 的专栏body。但是,在我向应用程序实施操作文本body并从文章模型中删除该列后,我无法让 Paper Trail 跟踪关联body列中的更改。我怎样才能让它发挥作用?

免责声明:我是 Rails 的新手。

文章.rb

...
  has_rich_text :body
  has_paper_trail
...
Run Code Online (Sandbox Code Playgroud)

文章架构(删除 :body 列后)

  create_table "articles", force: :cascade do |t|
    t.string "title"
    t.string "slug"
    t.datetime "archived_at"
    t.datetime "published_at"
    ...
  end
Run Code Online (Sandbox Code Playgroud)

动作文本模式

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
Run Code Online (Sandbox Code Playgroud)

我很乐意将与以前相同的功能返回到应用程序,这样我就可以看到文章正文中所做的更改。例如有人添加了一句话,删除了一个单词等。

小智 5

结合对我有用的答案:

# frozen_string_literal: true

ActiveSupport.on_load(:action_text_rich_text) do
  ActionText::RichText.class_eval do
    has_paper_trail
  end
end
Run Code Online (Sandbox Code Playgroud)

lib/rich_text_paper_trail.rb确保该文件已加载!例如,通过明确要求它:require 'rich_text_paper_trail'


Mar*_*gos 3

在尝试了此处提供的所有选项后,我想到了这个解决方法,最终效果非常好。

我所做的是,我只是用纯Trix 编辑器版本替换了 Action Text ,因此我能够保留:body在我的article.rb模型中,保存整个对象的版本并显示差异。耶!

  • 您是如何解决 ActiveStorage 附件部分的? (2认同)