我正在使用paper_trail-association_tracking gem保存AR关联的PaperTrail版本。我有一个模型,我们称它为“用户”,它具有多个组并且具有许多技能。这两个关联都具有联接表(user_groups
和user_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似乎会自动调整所有关联。
那么有没有一种方法可以指定我想要被关联的关联?还是不是最佳做法?对于我的用例,除非真正删除了用户本身或类似的东西,否则我看不到任何问题。
抱歉,我的模型听起来有点奇怪,我尝试使用一些通用和简化的方法,我的实际用例和模型有点复杂,但是这个问题说明了我的问题的底线。