2009-06-09 2 views
2

Если у меня есть одна модель (например, Wiki) и вы хотите сохранить ее вместе со своими версиями, я могу использовать плагин act_as_versioned, который хранит вики в таблице «wikis» и ее версиях в таблице «wikis_versions». Это просто, даже если я хочу умерить последнюю версию, прежде чем показывать ее публике, используя поле как статус с «ожидающим обзора/опубликованным».Каков наилучший способ хранения моделей ActiveRecord с версиями и их ассоциациями с версиями?

Каков наилучший способ обработки Wiki с помощью ассоциаций (например, вложений, активов, ..), которые также имеют версии? И как бы вы его смягчили? Вы создаете новую версию для wiki, хотя только ее ассоциация изменяется только для того, чтобы поддерживать поток, если да, то как насчет других ассоциаций?

Каков наилучший способ справиться с этим с небольшим количеством служебных данных?

Заранее спасибо.

ответ

1

Я использовал оба acts_as_versioned и acts_as_audited.

Я предпочитаю последнее, потому что он использует одну таблицу. С помощью actions_as_versioned у нас были проблемы с изменениями в версиях, требующих дополнительных миграций => это добавляет дополнительную сложность в процесс сборки и развертывания.

+0

@Toby: Я просмотрел act_as_audited, вам нужно было смягчить изменения, прежде чем показывать его публике, если да, то как вы справились с модерацией? Насколько я могу судить, act_as_audited немедленно меняет основную таблицу и сохраняет изменения в проверенной таблице. Я хочу, чтобы сохранить исходную запись без изменений до тех пор, пока изменения не будут модерированы, и только измените исходную запись, если модератор на задней панели одобрит изменения. Вы случайно использовали такую ​​систему? – Dharam

+0

Возможно, вы можете адаптировать один из этих плагинов в соответствии с вашими требованиями. Вам нужно будет изменить, когда будет записана версия. Мы выполняем пост-модерирование, поэтому версия отслеживается, но модератор может вернуться или отредактировать по мере необходимости. –

+0

Вы сказали, что используете act_as_audited, а также упомянули, что умеряете, где модератор может вернуться или отредактировать по мере необходимости. Изучая код, я не вижу возможности возврата. Вы случайно настроили act_as_audited в соответствии с вашими потребностями? Если да, разместите ли вы бит, который касается модерации? Заранее спасибо. – Dharam

0

У Ричарда Ливии есть хороший плагин для этого, который работает с act_as_versioned.

http://github.com/rlivsey/acts_as_versioned_association/tree/master

+0

Я посмотрел на act_as_versioned_association, который фактически зависит от act_as_versioned. Также act_as_versioned_association не переносится на rails 2.3.2 и не работает, поскольку act_as_versioned уже портирован на rails 2.3.2, который больше не совместим с act_as_versioned_association. Спасибо за ответ. – Dharam