Как заставить Paper_trail работать с Action Text? - PullRequest
1 голос
/ 06 апреля 2019

У меня был Paper Trail Gem , прекрасно настроенный с моей базовой моделью, в которой был столбец text с именем body. Однако после того, как я внедрил Текст действия в свое приложение и удалил столбец body из модели Article, Я не могу заставить Paper Trail отслеживать изменения в связанном столбце body. Как мне заставить это работать?

Отказ от ответственности: я новичок в Rails.

Article.rb

...
  has_rich_text :body
  has_paper_trail
...

Статьи Схема (после удаления: столбец тела)

  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

Я бы хотел вернуть в приложение ту же функциональность, что и раньше, где я мог видеть изменения, внесенные в текст статьи. Например. кто-то добавил предложение, удалил слово и т. д.

Ответы [ 3 ]

0 голосов
/ 08 мая 2019

Попробуйте добавить файл config/initializers/rich_text_paper_trail.rb с:

ActiveSupport.on_load(:action_text_rich_text) do
  has_paper_trail
end
0 голосов
/ 12 мая 2019

Попробовав все варианты, представленные здесь, у меня появилась идея об этом обходном пути, которая в конце концов сработала очень хорошо.

Что я сделал, так это то, что Я просто заменил Action Text на Trix Editor версия и, следовательно, мне удалось сохранить :body в моей модели article.rb, сохранив версии всего объекта и показать различия. Ура! ?

0 голосов
/ 06 апреля 2019

Ruby позволяет вам (к лучшему или к худшему) вносить изменения в вещи на лету.

Поместите это в инициализатор:

ActionText::RichText.class_eval do 
  has_paper_trail
end 
...