PaperTrail用法 - 版本控制 - 审计

时间:2015-01-16 06:35:32

标签: ruby-on-rails ruby paper-trail-gem

我有一个课程'课程'它有一个子类'主题'。 课程有很多科目。 我希望使用paper_trail - 4.0.0.beta1版本来跟踪课程/主题的任何变化。

课程类定义:

Class Course
has_many :subjects
has_paper_trail

end

主题类定义:

  Class Subject
   belongs_to :course
   has_paper_trail
   end

我按照以下步骤操作:

  1. 按名称创建了一门课程'数学' =>这进入了版本     表。
  2. 按名称创建主题'代数'并分配给     课程。
  3. 按名称创建了一个科目'科学'并分配给     当然。

  4. 现在,当我希望将课程对象恢复到第1步时,按照文章记录,我遵循以下步骤:

    old_course = course.previous_version.reify(has_many:true)

    但这样做会让我回到最新的课程对象,该课程有两门课程。我期待一个0科目的课程对象。 我做错了什么?

    我想要完成的任务即使主题被添加到课程中,我也希望将其视为课程的变化,并且应该为其创建一个版本,当我去任何以前的版本,我应该能够看到当时所有课程。

1 个答案:

答案 0 :(得分:0)

您可以使用paper_trail的{​​{1}}属性来获取上次更改课程对象的时刻,并且您可以选择created_at属性小于paper_trail的主题对象,从而确保您获得仅在该paper_trail版本之前创建的主题数量(例如,如果您在创建课程时获得paper_trail版本,则两个主题created_at属性将大于版本日期,这意味着它将返回0个主题)。