Хобрук: Ваш путь к мастерству в программировании

Как использовать пользовательскую таблицу версий вместо таблицы версий?

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

Model::UnknownAttributeError: неизвестный атрибут «событие» для 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
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 столбец.

18.06.2018
Новые материалы

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

Как я опубликовал свое первое приложение в App Store в 13 лет
Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

Что в лицо
Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

Почему шаблоны проектирования и почему нет?
Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

Создание дизайна обуви с помощью машинного обучения
Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

GraalVM в 2022 году: итоги года
2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..

Быстрая разработка: волшебный мир больших языковых моделей
РУКОВОДСТВО Быстрая разработка: волшебный мир больших языковых моделей Подход, основанный на данных, для получения наилучшего ответа Искусство и наука Можно ли совместить машинное..