2016-09-28 2 views
0

Если у вас был шаблонный эшафот для модели рельсов document, вы бы получили одну модель, контроллер, вид и кучу других файлов, которые я собираюсь игнорировать на данный момент.Rails 4 - Как визуализировать каждую версию записи с другим видом.

Со временем в приложение добавлены новые функции, а модель document получает еще несколько полей.

В моем приложении я пытаюсь иметь такие документы, что после их архивирования данные никогда не изменяются (это легко сделать), однако с тех пор представление, используемое для рендеринга старых архивных документов, изменило и отобразит те вещи, ; t там, где документ был заархивирован.

Есть ли способ связать каждый document с версией представления, чтобы данные не оставались неизменными, но способ, которым он визуализируется, тоже одинаков?

+0

просмотров динамически генерируется с помощью модели, которую вы извлекаете из своего db .. так что если вы добавите новые поля, они появятся и на старых данных. Вы можете либо использовать другой шаблон для просмотра ваших архивных данных. или просто использовать, если фильтры вашего шаблона показывают что-то вроде 'if document.archived? ', чтобы фильтровать неприменимые поля для архивных записей. – sa77

ответ

0

Несомненно. Вы могли бы просто добавить столбец или archive_version в эту таблицу, установить все существующие как view_version 1 и выполнить рендеринг, например. show_archived_v1.html.erb от вашего контроллера для этих записей.

Для «текущих» записей вы можете обнаружить, что archive_version пуст и просто визуализируется show.html.erb.

Поскольку вы получаете новый тип версии, который необходимо заархивировать, просто сохраните их с помощью 2 в столбце archive_version и отрисуйтеwheb, отображающий их.

+0

Или другим вариантом было бы сохранить шаблон в базе данных. Очевидно, что это не идеально, но если мы говорим о небольшом документе с небольшим размером, это, вероятно, будет лучшей идеей, а не наличием n шаблонов. – Vlad