【问题标题】:Rails 6 PaperTrail pull logs from only one modelRails 6 PaperTrail 仅从一个模型中提取日志
【发布时间】:2021-09-19 19:18:16
【问题描述】:

假设我正在使用 PaperTrail gem 在我的 Rails 6 应用程序中跟踪两个模型 - BookUser。现在我想生成仅包含日志的 CSV 文件,其中仅包含 Book 模型活动。如何如何只为一个模型提取版本,例如Book?

# models
class Book
  has_paper_trail
end

class User
  has_paper_trail
end

#call method for csv_generator service

    def call
      CSV.generate(col_sep: ';', write_headers: true, headers: LOG_HEADERS, encoding: 'UTF-8') do |csv|
        PaperTrail::Version.includes([:item]).limit(50).order(id: :desc).each do |v|
          tracked_data(v)
          csv << [v.created_at.in_time_zone('CET'),
                  v.event,
                  version.whodunnit,
                  @new_data_value]
        end
      end
    end

现在我从 Book 和 User 模型中获取日志,而不仅仅是 Book

【问题讨论】:

    标签: ruby-on-rails paper-trail-gem


    【解决方案1】:

    默认迁移添加了一个item_type 列,用于跟踪表。

    在给定的情况下,您可以执行以下操作:PaperTrail::Version.where(item_type: 'Book'),它将为您找到 book 表中所有更改的所有版本。

    如果你想按书本实例做,那就是:

    Book.all.each do |book|
      book.versions
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      相关资源
      最近更新 更多