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

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

Мои начальные мысли состоят в том, чтобы иметь следующие отношения:

class User < ActiveRecord::Base
  has_many  :notes
end

class Note < ActiveRecord::Base
  has_many :note_revisions
  belongs_to :user
end

class NoteRevision < ActiveRecord::Base
  belongs_to :note_revision
end

Модель Note будет только содержать метку времени того, когда примечание было сначала создано. Модель NoteRevision будет содержать текст, а также метку времени для каждого пересмотра. Таким образом, каждый раз, когда новый пересмотр сделан, новая запись создается в таблицу NoteRevision, которая прослежена через таблицу Note. Надо надеяться, это имеет смысл!

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

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

1
задан Magicked 27 April 2010 в 18:55
поделиться

2 ответа

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

2
ответ дан 3 September 2019 в 00:59
поделиться

Другой вариант - драгоценный камень vestal_versions . На сайте Railscasts.com есть эпизод по его использованию: http://railscasts.com/episodes/177-model-versioning

0
ответ дан 3 September 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: