如何为没有可审计对象的审计编写命名范围?

How to write named scope for Audits which don`t have auditables?

我在 Rails 应用程序的 Ruby 中使用 Audit gem。我在 Audits 和我的 Orders 之间使用了多态关联。

现在,我想编写一个命名范围以仅获取那些未删除订单的审核(发生这种情况是因为在创建审核后订单被删除

<Audit id:110,
auditable_id:4,
auditable_type:"Order",
user_id:1,
user_type:"User",
username:nil,
action:"create",
created_at:"2018-04-07 09:06:20">,
#<Audit id:49,
auditable_id:3,
auditable_type:"Order",
user_id:3,
user_type:"User",
username:nil,
action:"create",
created_at:"2018-04-06 12:28:41">

现在,当我在我的控制台中输入 Audit.first.auditable 时,我得到的是 nil,因为对应于该审计的订单被删除,当我输入 Audit.second.auditable 时,我得到对应于第二个审计的订单。

我想过滤我的审核,以便删除订单被删除类型的审核(如 Audit.first)

你可以这样做:

Audit.rb

scope :with_active_orders, -> { joins(:order) }

如果至少有一个 Order,return Audits