如何过滤审计不为零的审计?

How to filter Audits with auditables not nil?

我在 Rails 申请的 Ruby 中使用审计 gem。我有审计订单、发票等可审计项。我的订单和发票模型是这样开始的:-

 class Order < ApplicationRecord
    audited
    has_associated_audits

因为has_associated_audits,Audit[i].auditable 会给我order/invoice对应的第i个Audit。现在一些订单被删除了,Audit[i].auditable 变成了 nil。我如何只获得 Audit[i].auditable 不为 nil 的审计?

因为 Auditable 关系是多态的,您不能只是加入 table 然后继续前进。相反,您将需要一些原始的 SQL 魔法。这是一个使用我自己的代码库中的东西的示例,请根据您的需要进行调整:

Audited::Audit.joins('INNER JOIN titles ON audits.auditable_id = titles.id').where(auditable: nil, auditable_type: 'Title')

改编自这个伟大的 SO post 此处:ActiveRecord - querying polymorphic associations