Paper trail gem 使名称为 version 的字段不可用

Paper trail gem makes fields with the name version unusable

我有一个名为 clients 的 table,由 AR 模型 Client 支持。这是 clients table:

的结构
clients
  - id <serial primary key>
  - name <varchar(255)>
  - version <varchar(255)>

我已经使用文件记录向它添加了版本控制 gem。但是,当我更新或创建记录时,version 列不会更新。当我执行 Client.first.version 时,即使我在 table 中的所有记录都有一个非空或非空的 version 列,它也会给我 nil 值。我怀疑这是因为文件记录 gem。当我将项目的分支切换到不使用 gem 的版本时,我可以获得版本的非零值。

是否有解决此问题的解决方法?

当然有。问题是,version is the default 关联名称在 paper_trail 中,因此在客户端调用关联而不是获取它的属性。 您可以将模型更改为:

class Client < ActiveRecord::Base
  has_paper_trail version: :paper_version, versions: :paper_versions
end

c = Client.first
c.version #=> row field
c.paper_versions #=> previous versions.

编辑: 刚刚发现在paper_trail这里也有记载 - https://github.com/airblade/paper_trail#6-extensibility