【问题标题】:How to filter Audits with auditables not nil?如何过滤审计与可审计的不是零?
【发布时间】:2018-10-01 05:46:35
【问题描述】:

我在我的 Ruby on Rails 应用程序中使用 Audit gem。我有可审计的项目,例如订单、审计发票。我的订单和发票模型是这样开始的:-

 class Order < ApplicationRecord
    audited
    has_associated_audits

由于 has_associated_audits,Audit[i].auditable 会给我对应于第 i 个 Audit 的订单/发票。现在一些订单随后被删除,Audit[i].auditable 变为 nil。如何仅获取 Audit[i].auditable 不为零的那些审计?

【问题讨论】:

    标签: ruby-on-rails audit


    【解决方案1】:

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

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

    改编自这篇很棒的 SO 帖子:ActiveRecord - querying polymorphic associations

    【讨论】:

    • 谢谢,它成功了,但是这样我将不得不对每个订单、发票、退货进行内部连接。有没有更好的办法?
    猜你喜欢
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2018-09-18
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2015-12-14
    相关资源
    最近更新 更多