Как использовать пользовательскую таблицу версий вместо таблицы версий? - PullRequest
0 голосов
/ 26 апреля 2018

Для проекта, над которым я сейчас работаю, мне нужно реализовать управление версиями объектов. К сожалению, мне нужно вести полную историю каждого объекта, поэтому решение для одной таблицы, такое как Papertrail, быстро станет неуправляемым. Поэтому я пытаюсь создать собственную таблицу версий для каждого объекта, используя papertrail. Я следовал за документацией, но получал ошибку при создании объекта

Model :: UnknownAttributeError: неизвестный атрибут 'event' для ArticleVersion.

Вот реализованный код:

  class Article < ActiveRecord::Base
   has_paper_trail class_name: 'ArticleVersion'
  end

  class ArticleVersion < PaperTrail::Version
   self.table_name = :article_versions
  end

  module PaperTrail
   class Version < ActiveRecord::Base
     include PaperTrail::VersionConcern
     self.abstract_class = true
   end
  end

Вот миграция для статей миграции:

class CreateArticleVersions < ActiveRecord::Migration[5.0]
 def change
  create_table :article_versions do |t|
  t.string :title
  t.text :text

  t.timestamps
end
end
end

и когда я пытаюсь создать статью с помощью Article.create (text: 'some text') Я получаю вышеупомянутую ошибку. Может ли кто-нибудь помочь мне выяснить, если я что-то упустил.

1 Ответ

0 голосов
/ 19 июня 2018
create_table :article_versions do |t|
  t.string :title
  t.text :text
  t.timestamps
end

Model::UnknownAttributeError: unknown attribute 'event' for ArticleVersion.

В модели ArticleVersion отсутствует атрибут event , поскольку в таблице article_versions отсутствует столбец event .

...