通过与PaperTrail关联仅对一个has_many:

kay*_*zie 6 ruby paper-trail-gem rails-activerecord ruby-on-rails-5

我正在使用paper_trail-association_tracking gem为AR关联保存PaperTrail版本。我有一个模型,我们称它为“用户”,它具有多个组并且具有许多技能。这两个关联都具有联接表(user_groupsuser_skills)。所以我的用户模型有两个has_many :through关联。所有模型(用户,组,技能,用户技能,用户组)均已启用PaperTrail。

class User < ApplicationRecord
  has_paper_trail

  has_many :groups, through: user_groups
  has_many :user_groups

  has_many :skills, through: user_skills
  has_many :user_skills
end
Run Code Online (Sandbox Code Playgroud)

假设我想reify使用User模型的早期版本以及他们的Skills(user_skills记录),但不想恢复到用户Groups的早期版本user_groups。代码看起来像这样:

me = User.find(1)
older_me = me.versions.last.reify(has_many: true)
older_me.save
Run Code Online (Sandbox Code Playgroud)

这将同时为该用户验证UserGroups和UserSkills,但是我希望它仅对UserSkills进行验证。看起来gem会根据我浏览的源代码自动调整所有关联。

那么,有没有一种方法可以指定我想要被关联的关联?还是不是最佳做法?对于我的用例,除非真正删除用户本身或类似的东西,否则我看不到任何问题。

抱歉,我的模型听起来有点奇怪,我尝试使用一些通用和简化的方法,我的实际用例和模型有点复杂,但是这个问题说明了我的问题的底线。