Получите следующую и предыдущую версии для идентификатора версии, используя paper_trail

Я использую гем paper_trail для версии моей модели Pages.

У меня есть метод version, который принимает page_id и version_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_version и next_version.


person Cameron    schedule 29.11.2016    source источник
comment
разве вы не должны использовать @version.next и @version.previous вместо @version.next_version и @version.previous_version ?   -  person fanta    schedule 29.11.2016


Ответы (1)


Объект версии имеет next и previous методы, тогда как версионный объект (в вашем случае это @page) имеет методы next_version и previous_version.

So:

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

в то время как

@page.versions.previous
#=> returns a previous version object
person Andrey Deineko    schedule 29.11.2016
comment
@Cameron отредактировал ответ, указав некоторые подробности :) - person Andrey Deineko; 29.11.2016