1

我有一个类“课程”,它有一个子类“主题”。 一门课程有很多科目。我希望使用 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. 创建一个名为“科学”的主题并分配给课程。

现在,当我希望将课程对象恢复到第 1 步时,根据论文记录,我正在执行以下步骤:

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

但这样做会让我返回包含两个主题的最新课程对象。我期待一个有 0 个科目的课程对象。我究竟做错了什么?

我想要完成的是,即使将主题添加到课程中,我也想将其视为课程的更改,并且应该为它创建一个版本,当我转到任何以前的版本时,我应该能够看到该课程当时的所有科目。

4

1 回答 1

0

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

于 2015-01-29T19:16:22.517 回答