仅通过与PaperTrail关联来验证一个has_many:吗?

时间:2019-10-22 18:49:35

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

我正在使用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

说我想reify以及其技能(user_skills记录)一起使用的是用户模型的较早版本,但不想还原为用户组的较早版本(user_groups )。代码看起来像这样:

me = User.find(1)
older_me = me.versions.last.reify(has_many: true)
older_me.save

这将同时对此用户进行UserGroups和UserSkills的验证,但是我希望它仅对UserSkills进行验证。根据我浏览过的source code,该gem似乎会自动调整所有关联。

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

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

0 个答案:

没有答案