Rails vestal_versions gem создает версии без сохранения родителя

Я заинтересован в использовании гема vestal_versions в моем приложении rails, но мне интересно, если кто-нибудь знает, есть ли способ, которым я могу создать новую версию, но на самом деле не обновить соответствующее ActiveRecord.

Например, если у меня есть пользователь с именем "jim" и я создаю новую версию с именем "steve", я хотел бы иметь возможность сохранить версию без изменения родительской записи, пока не захочу сделать это позже. время (используя revert_to!(newer_version) или что-то подобное).

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

1 ответ

Решение

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

Вы можете заставить это поведение что-то вроде:

def create_version
  merge_version_changes
  create_version
end

в "версионной" модели, но при этом создается новая версия с изменениями, которые вы внесли в вашу активную ActiveRecord без изменения таблицы родительского объекта, когда вы используете:

blah = Blah.first
blah.version

он скажет вам, что вы используете последнюю версию, но не загружаете эти данные (так как они никогда не менялись). Если вы используете:

blah.revert_to(:last)

Это не изменит вашу запись, так как он думает, что вы уже используете последнюю версию. Так далее..

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

Другие вопросы по тегам