kay*_*zie 6 ruby paper-trail-gem rails-activerecord ruby-on-rails-5
我正在使用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
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会根据我浏览的源代码自动调整所有关联。
那么,有没有一种方法可以指定我想要被关联的关联?还是不是最佳做法?对于我的用例,除非真正删除用户本身或类似的东西,否则我看不到任何问题。
抱歉,我的模型听起来有点奇怪,我尝试使用一些通用和简化的方法,我的实际用例和模型有点复杂,但是这个问题说明了我的问题的底线。
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |