Вопрос дизайна в Ruby on Rails - PullRequest
       0

Вопрос дизайна в Ruby on Rails

0 голосов
/ 16 февраля 2011

Хорошо, сценарий простой (?).Я имею в виду Articles, Reviews и Comments, три разные модели, которые пользователь может обновить.Мне было интересно, каков наилучший дизайн, если я хочу, чтобы обновленные записи (от пользователя) стали доступны только администратору (а не в открытом доступе), но в то же время старые остаются неизменными до тех пор, пока администраторотзывы их.

Первая мысль заключалась в том, что было бы лучше иметь самоссылочные объединения, создав новую запись об обновлении действия пользователя и сославшись на старую, чтобы администратор при завершении просмотра старой записи, последняяудаляется и рецензируемый публикуется.Я серьезно думаю, что если будет много обновлений от пользователей, то таблица, содержащая данные, вырастет БОЛЬШОЙ за очень короткое время.Есть ли у вас какие-либо другие предложения?

Большое спасибо за помощь:)

PS Я использую среду Ruby on Rails, если это вообще что-то меняет ..

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Это напоминает мне черновую систему Wordpress, и, если честно, я думаю, что это, вероятно, один из немногих способов сделать это.То есть есть столбец с post_type, например [черновик, опубликованный и т. Д.].В качестве альтернативы, вы можете иметь только черновую модель и опубликованную модель, которая полиморфна модели Article.Я думаю, что вы правы в своих опасениях по поводу слишком большого стола.Таким образом, я думаю, что вам лучше выбрать стратегию удаления старых черновиков или архивирования их в другой таблице, чтобы они просто занимали место и не мешали вашему поисковому времени (также не забывайте использовать индексы для повышения производительности).

Может быть, может помочь и конечный автомат (http://www.practicalecommerce.com/blogs/post/122-Rails-Acts-As-State-Machine-Plugin)

0 голосов
/ 16 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...