Mongoid :: Управление версиями - как проверить предыдущие версии? - PullRequest
2 голосов
/ 28 января 2012

Я включил модуль Mongoid :: Versioning в мой класс на основе Mongoid. Какой лучший способ проверить предыдущую «версию» или воплощение документа? Я хочу иметь возможность увидеть его историю. Это может быть либо через rails console, либо через оболочку MongoDB. Какой самый простой способ просмотреть историю документа?

1 Ответ

7 голосов
/ 30 января 2012

Модуль Mongoid :: Versioning добавляет в документ поле с именем version типа Integer, в котором записывается версия текущего документа, начиная с 1, до максимальной (если она определена).Кроме того, у вас будет встроенный документ «версии», который будет создан.Затем существует обратный вызов before_save, который позаботится о создании версий для вас.

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

#Make an empty post, just a title, version 1
post = Post.create(:title => "Hello World")
# Now add some "content" and save, version 2
post.content = "Woo - content"
post.save

Это даст нам документ примерно так:

{
  "title": "Hello World",
  "content": "Woo - content",
  "comments": [
  ]
  "version": 2
  "versions": [
    { "title": "Hello World", "version": 1 }
  ]
}

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

post = Post.find(:first, :conditions => {:title => "Hello World"})

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

Точно так же вам нужно только запустить db.namespace.find () на основе полей title, version, если вы хотите это сделать.через оболочку.

Надеюсь, это имеет смысл.

...