【问题标题】:Paper trail gem makes fields with the name version unusablePaper trail gem 使名称为 version 的字段无法使用
【发布时间】:2017-12-06 05:11:43
【问题描述】:

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

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

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

有什么办法可以解决这个问题吗?

【问题讨论】:

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


    【解决方案1】:

    当然,有。问题是,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

    【讨论】:

    • 就是这样!但新名称需要符号:has_paper_trail version: :paper_version, versions: :paper_versions
    • 在当前版本 (v11) 的 paper_trail 传递版本关联名称为 has_paper_trail versions: :paper_trail_versions 已弃用。请改用has_paper_trail versions: {name: :paper_trail_versions}
    猜你喜欢
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    相关资源
    最近更新 更多