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, так как он кажется ближе к тому, что я собираюсь сделать.