Самый простой способ сделать это - добавить attr_accessor, когда модель объявлена версионной.
Тогда переопределить needs_version? проверить этот атрибут.
В любом месте в LaserLemon :: VestalVersions :: ClassMethods # versioned добавить эту строку:
attr_accessor :force_reversion
Затем переписать LaserLemon :: VestalVersions :: InstanceMethods # needs_version? чтобы проверить этот атрибут:
N.B. из-за способа обработки флажков «0» считается ложным для флажков и логических полей, но является истинным значением в ruby. Поэтому мы не можем просто проверить, не возвращает ли force_reversion значение false.
def needs_version?
!(versioned_columns & changed).empty? ||
![nil, "0", 0, false].include?(force_reversion)
end
И все готово. Просто передайте любое значение force_reversion, как если бы оно было столбцом.
После вышеуказанных изменений со следующей моделью:
класс пользователя
@user.update_attributes(:force_reversion => true, :unversioned_column => new_value)
Или в форме:
<%= form_for @user do |f| %>
<%= f.label :force_reversion, "Force New Version" %>
<%= f.check_box :force_reversion %>
... More fields ...
<% end %>