已审核的 gem 未审核删除关系
Posted
技术标签:
【中文标题】已审核的 gem 未审核删除关系【英文标题】:Removing relations is not being audited by audited gem 【发布时间】:2016-03-08 12:36:09 【问题描述】:我正在使用 Associated Audits 与 Collective Idea 的 audited gem 建立 has_many through
关系。我看到 create
审计正在添加 through
模型,但删除该关系后我看不到任何审计。
这是我的 3 个模型。一个Post
可以是多个Categories
。
app/models/post.rb
class Post < ActiveRecord::Base
audited
has_associated_audits
has_many :categorizations, dependent: :destroy
has_many :categories, through: :categorizations
end
app/models/category.rb
class Category < ActiveRecord::Base
audited
has_associated_audits
has_many :categorizations, dependent: :destroy
has_many :posts, through: :categorizations
end
app/models/categorization.rb
class Categorization < ActiveRecord::Base
audited
audited associated_with: :post
audited associated_with: :category
belongs_to :category
belongs_to :post
end
我的Post
表单有一堆用于分类的复选框:
<%= f.association :categories, as: :check_boxes, collection: Category.order(:name), label_method: :name, value_method: :id, label: false %>
当我编辑现有的 Post
并选中一个框以查找 Category
时,我确实在审核的操作字段。
当我编辑现有的 Post
并取消选中Category
的框时,我没有看到新的审核条目。
当我删除Post
时,我确实看到Post
和Categorization
auditable_type 字段的destroy
审计,所以这方面工作得很好。
-
audited 可以跟踪这些取消选择吗?如果有,怎么做?
我在上述模型中的审核设置是否有任何明显的错误/错误?没有可遵循的
has_many through
文档,所以我猜了一下。
【问题讨论】:
【参考方案1】:可能与this Rails issue 相关,我不得不换掉我的dependent: :destroy
行:
app/models/post.rb
class Post < ActiveRecord::Base
audited
has_associated_audits
has_many :categorizations
has_many :categories, through: :categorizations, dependent: :destroy
end
app/models/category.rb
class Category < ActiveRecord::Base
audited
has_associated_audits
has_many :categorizations
has_many :posts, through: :categorizations, dependent: :destroy
end
有了这个设置,我看到了添加和删除关系的审计。
【讨论】:
以上是关于已审核的 gem 未审核删除关系的主要内容,如果未能解决你的问题,请参考以下文章