Я являюсь частью команды по созданию новой системы управления контентом для нашего общедоступного сайта. Я пытаюсь найти самый простой и лучший способ встроить механизм управления редакциями. Объектная модель довольно базовая. У нас есть абстрактный класс «BaseArticle», который включает свойства для независимых от версии/метаданных, таких как «Heading» & «CreityBy». Некоторые классы наследуют от этого, например, DocumentArticle, который имеет свойство «URL», которое будет путем к файлу. «WebArticle» также наследует от «BaseArticle» и включает свойство «MureInfo» и коллекцию объектов «Tabs», которые включают в себя «Body», который будет содержать отображаемый HTML (объекты Tab не являются производными ни от чего). «NewsArticle» и «JobArticle» наследуют от «WebArticle». У нас есть другие производные классы, но они дают достаточно примера.
Мы придумали два подхода к сохранению контроля за редакцией. Я называю их «Approach1» и «Approach2.» Я использовал SQL Server, чтобы сделать базовую схему каждой из них:
С помощью Approach1 план состоит в том, чтобы новые версии статей сохранялись через обновление базы данных. Будет установлен триггер для обновлений и будут вставлены старые данные в таблицу xxx_Versions. Я думаю, что триггер нужно настроить на каждом столе. Этот подход имеет то преимущество, что единственная «головная» версия каждой статьи хранится в основных таблицах, со старыми версиями.
При Approach2 план предусматривает включение в базу данных новых вариантов статей. Главный вариант статей будет определен на основе мнений. Это, по-видимому, имеет преимущество, заключающееся в меньшем количестве таблиц и меньшем количестве кода (например, без триггеров).
Обратите внимание, что при обоих подходах план будет заключаться в вызове хранимой процедуры Upsert для таблицы, сопоставленной с соответствующим объектом (мы должны помнить о необходимости обработки случая добавления новой статьи). Эта восходящая хранимая процедура вызовет это для класса, из которого она исходит, например, upsert_NewsArticle вызовет upsert_WebArticle и т.д.
Мы используем SQL Server 2005, хотя я думаю, что этот вопрос не зависит от аромата базы данных. Я проделал обширное траление интернета и нашел ссылки на оба подхода. Но я не нашел ничего, что бы сравнивало их и показывало, что они лучше. Я думаю, что со всеми книгами баз данных в мире этот выбор подходов, должно быть, возник раньше.
Мой вопрос: какой из этих подходов является лучшим и почему?
-121--897055-Я интегрировал разработку с Facebook. Теперь, когда я создаю учетную запись пользователя после того, как пользователь вошел в свою учетную запись Facebook,
user = User.create(:email => data["email"],
:password => Devise.friendly_token[0,20])
user.confirmed_at = DateTime.now
user.save!
даже несмотря на то, что учетная запись была подтверждена, электронное письмо с подтверждением все еще отправляется. Есть идеи, как я могу выключить электронную почту?