使用 paper_trail 获取版本 ID 的下一个和上一个版本

Get next and previous versions for a version id using paper_trail

我正在使用 paper_trail gem 对我的 Pages 模型进行版本控制。

我有一个名为 version 的方法,它接受 page_idversion_id

def version
  page = Page.where(id: params[:page_id]).first
  @version = page.versions.where(id: params[:version_id]).first
  @previous_version = @version.previous_version rescue nil
  @next_version = @version.next_version rescue nil
end

我想做的是获取下一个和上一个版本以将它们传递到我的视图中。但是我只能访问当前版本。 @previous_version@next_version 始终是 nil,即使我有下一个和上一个版本。好像不知道previous_versionnext_version这两个方法是什么。

Version 对象有 next and previous 方法,而版本对象(在你的例子中是 @page)有方法 next_versionprevious_version.

所以:

@page.previous_version
#=> returns previous version of @page object

@page.versions.previous
#=> returns a previous version object