【问题标题】:audited, Look up audits belonging to a user已审核,查找属于用户的审核
【发布时间】:2012-07-08 04:19:21
【问题描述】:

我正在使用audited 来跟踪名为Page 的模型的更改。我希望能够找到与某个用户关联的所有审计(通过审计表中的user_id)。

我该怎么做?到目前为止,我发现访问Audit 模型的唯一方法是这样的:

@audits = Audited::Adapters::ActiveRecord::Audit.all

这似乎不是正确的做事方式。

尝试@audits = Audit.all 会出现Uninitialized constant 错误。

有没有更优雅的方式与 gems 提供的模型交互?

【问题讨论】:

    标签: ruby-on-rails ruby rubygems acts-as-audited


    【解决方案1】:

    可能是这样的

    include Audited::Adapters::ActiveRecord::Audit

    然后你就可以了

    @audits = Audit.all

    ?

    我认为这应该可行......或者更好:

    include Audited

    【讨论】:

    • 是的,这项工作包括 Audited,看一个简单的例子:class Audit
    • 值得注意的是,您可以执行 Audited.audit_class,然后您可以执行 Audited.audit_class.where("...") 之类的操作
    【解决方案2】:

    您可以使用

    访问所有审计记录
    Audited::Audit.all
    

    我在输入时得到了结果

    Audited.audit_class
    

    弃用警告:audit_class 已弃用并将被删除 从 Rails 5.0 (Audited.audit_class 现在总是 Audited::Audit。这个 方法将被删除。)。

    【讨论】:

      【解决方案3】:

      我知道这不是一种有效的方法,但我就是这样做的。

      在 Rails 控制台中,我检索了一条我知道已经过审核的记录。

      @page = Page.first

      然后我检索该记录的第一次审核。

      @audit = @page.audits.first

      然后您可以在@audit 上致电#class

      @audit.class

      结果:

      Audited::Adapters::ActiveRecord::Audit(id: integer, created_at: 
      datetime, updated_at: datetime, auditable_id: integer, auditable_type: 
      string, user_id: integer, user_type: string, username: string, action: 
      string, audited_changes: text, version: integer, comment: string, 
      full_model: text, remote_address: string, associated_id: integer, 
      associated_type: string, request_uuid: string)
      

      Audited::Adapters::ActiveRecord::Audit 是类名,然后您可以在搜索中使用它。

      audits = Audited::Adapters::ActiveRecord::Audit.where(:user_id => 8675309)

      【讨论】:

        猜你喜欢
        • 2018-11-28
        • 2016-03-08
        • 2018-05-11
        • 2022-10-08
        • 1970-01-01
        • 1970-01-01
        • 2019-06-08
        • 2016-11-23
        • 2012-08-09
        相关资源
        最近更新 更多