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
我有一个名为 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