Paper trail gem使名称版本的字段无法使用

时间:2017-12-06 05:11:44

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

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

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

我已经使用paper trail gem为它添加了版本。但是,当我更新或创建记录时,列version不会更新。当我执行Client.first.version时,它会给我nil值,即使表中的所有记录都有version列不为空或空。我怀疑这是因为纸痕宝石。当我将项目的分支切换到不使用gem的版本时,我可以获得非零值的版本。​​

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

1 个答案:

答案 0 :(得分:2)

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

WITH CTE AS(
   SELECT Device_Code,
          ign,
          Event_DateTime,
          ROW_NUMBER() OVER (PARTITION BY ign ORDER BY Device_Code) RN 
   FROM TableName
)
SELECT Device_Code,
          ign,
          Event_DateTime
FROM CTE
WHERE RN % 2 = 1

修改:刚发现它在paper_trail中也有记录 - https://github.com/airblade/paper_trail#6-extensibility