问题标签 [paper-trail-gem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2257 浏览

ruby-on-rails - 要散列的纸迹字符串

是否可以将字符串转换为哈希,以便可以像哈希一样对其进行迭代?

我正在使用paper_trailgem 并尝试对不相邻的版本进行区分。这使我无法使用内置"changeset"哈希,它可以满足我的需求。

使用许多正则表达式,我可以处理这些字符串,但我想将它们转换为哈希值,"description"将其作为键,接下来的两项将是value.firstand value.last

用 调用字符串<%= version.object_changes %>。我怎么能把它称为哈希?

0 投票
1 回答
110 浏览

ruby-on-rails - 如何将嵌套路由资源添加到所有现有路由

我正在使用一个名为 paper_trail 的伟大宝石。我创建了一个名为“历史”的页面,其中将列出任何资源的版本。我的路线文件为每条路线都有一个嵌套资源……这根本不是 DRY。

这条路线给了我 users/1/history

现在我有公司/1/历史

如何使 /history 作为所有路由的嵌套路由工作,而不用每个资源的嵌套历史路径填充我的路由文件?

0 投票
2 回答
3040 浏览

ruby-on-rails - 安装 paper_trail 后,得到“irb: warn: can't alias context from irb_context.” 从 Rails 控制台

我已经通过rails c在 before 和 after运行来测试了这一点git stash。在 Mavericks 的 Rails 4.1 上,按照说明添加versions表格并添加has_paper_trail到三个模型后,每当我运行时,rails c我都会得到

我花了一些时间谷歌搜索,但运气不佳,有一些旧线程在谈论rspec,但我不明白这有什么关系,因为我没有使用它。任何想法为什么会发生这种情况?

0 投票
3 回答
5364 浏览

ruby-on-rails - 在 papertrail 中查找特定属性已更改的版本

我在我的项目中使用Papertrail gem,并进行了广泛的搜索以尝试找到如何执行以下操作。

我想做的是找到我的对象的版本,其中特定属性成为特定值,即

object.versions.where(attribute: "value")

有谁知道 Papertrail 是否可以做到这一点?

0 投票
1 回答
57 浏览

ruby-on-rails - “重做”突然失败。

不久前,我在 paper_trail gem 上的这个 railscasts 中实现了一个“撤消”和“重做”按钮。直到今天“重做”停止工作时,一切都很好。我一直无法弄清楚为什么。

这是相关的控制器操作:

它在线上失败:link = view_context.link_to(link_name, revert_version_path(@version.next, :redo => !params[:redo]), :method => :post)

出现错误:ActionController:UrlGenerationError... No route matches {:action=>"revert", :controller=>"versions", :format=>nil, :id=>nil, :redo=>false} missing required keys: [:id]
所以,很明显,我按照错误来查看为什么 :id 没有被传入,但确实如此。

在参数中:

{"_method"=>"post", "authenticity_token"=>"6/B1YDXqZ62+DqMMdcYTfCTIJGaVvc1RjKmxWW2GkeQ=", "redo"=>"true", "id"=>"29"}

id 是明确定义的,这个控制器的第一行会根据这个 id 在表中找到对应的版本。

我无法弄清楚这里出了什么问题,因此将不胜感激任何帮助。

0 投票
0 回答
101 浏览

ruby-on-rails-4 - Ruby 的 Paper Trail 扩展关联数据

我在我的 Ruby 项目中使用 airblade Paper Trail gem,我试图更多地使用历史而不是版本历史 - 也就是说,我不会尝试从版本历史中重新创建数据,更多使用它来告诉用户在记录的整个生命周期中发生了什么。

有没有一种方法可以向我的模型添加自定义转储程序或挂钩,以允许任何关联(例如 company_id)被遍历到一个有意义的值 - 例如公司名称。

以具有属性“名称”的模型公司为例,该模型通过 id 与产品相关。

当产品更新时,company_id 被存储在版本历史中,我想做的是让它在保存之前遍历关系并让我得到公司名称。

我在代码中找到了对“转储”调用的引用,但我想知道如何扩展我的模型以正确响应“转储”。

0 投票
1 回答
221 浏览

ruby-on-rails - 如何更改 paper_trail 中的对象视图

我已经使用 paper_trail gem 在我正在开发的应用程序中进行审计。我能够管理它的大部分功能,并且能够向用户显示版本表中的数据。这样做时,版本表的对象属性中的数据有些不可读。我怎样才能使它可读?这是我的对象属性的示例输出: version.object在单个单元格中以以下格式检索:

0 投票
1 回答
671 浏览

ruby-on-rails - 使用 RVM 升级到 Ruby 2.1.2 后出现 PaperTrail (paper_trail) 错误。未初始化的常量 PaperTrail::Rails::Engine

我正在尝试从Ruby 1.9.3 to Ruby 2.1.2 (Rails 4.0). 我正在使用 RVM。

我安装了 Ruby 2.1.2,更新了 Gemfile,包括指定"gem 'paper_trail', '~> 3.0.5'",切换到带有 RVM 的 Ruby 2.1.2,创建了一个新的 gemset,然后切换到它。

然后我做了一个捆绑安装。

当我尝试运行 rails server 时,出现以下错误:

/Users/sjohnson/my_app/config/initializers/paper_trail.rb:2:in <top (required)>': uninitialized constant PaperTrail::Rails::Engine (NameError) from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/zeus-0.13.3/lib/zeus/load_tracking.rb:50:in load' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/zeus-0.13.3/lib/zeus /load_tracking.rb:50:in load' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/zeus-0.13.3/lib/zeus/load_tracking.rb:43:in load' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/engine.rb:609:in block (2 levels) in <class:Engine>' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/engine.rb:608:in each'来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/engine.rb:608:in block in <class:Engine>' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:30:in instance_exec' 来自 /Users/sjohnson/.rvm/gems /ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:30:in run' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:55:in block in run_initializers' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib /ruby/2.1.0/tsort.rb:226:in block in tsort_each' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:348:in block (2 levels) in each_strongly_connected_component'来自/Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb :418:在 block (2 levels) in each_strongly_connected_component_from' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:427:in each_strongly_connected_component_from' 来自 /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:417:in block in each_strongly_connected_component_from' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:44:in each' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1 .2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:44:in tsort_each_child' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:411:in call' 来自 /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0 /tsort.rb:411:in each_strongly_connected_component_from' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:347:in block in each_strongly_connected_component' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in each' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in call' from /Users/ sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in each_strongly_connected_component' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:224:in tsort_each' 来自 /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby /2.1.0/tsort.rb:205:in tsort_each' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:54:in run_initializers' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/application.rb:215 :在 initialize!' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/railtie/configurable.rb:30:inmethod_missing'来自/Users/sjohnson/my_app/config/environment.rb:5:in<top (required)>' from /Users/sjohnson/my_app/spec/spec_helper.rb:10:in来自/Users/sjohnson/my_app/spec/spec_helper.rb:10:in<top (required)>' from /Users/sjohnson/my_app/spec/api/v1/api_authentication_spec.rb:1:in 需要'来自/Users/sjohnson/my_app/spec/ api/v1/api_authentication_spec.rb:1:in <top (required)>' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in load' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/configuration。 rb:1057:in block in load_spec_files' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in each' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in load_spec_files' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:97:in setup '来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:85:in run' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:70:in run' 来自 /Users/sjohnson /.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:38:in invoke' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/exe/rspec:4:in ' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/bin/rspec:23:in load' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/bin/rspec:23:in ' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/bin/ruby_executable_hooks :15:在 eval' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/bin/ruby_executable_hooks:15:in '

我试图运行: bundle exec rails generate paper_trail:install

它表明迁移文件已经存在(PaperTrail 在 1.9.3 下工作)。所以,我再次运行它: bundle exec rails generate paper_trail:install -s

它成功完成,但我有同样的问题。

配置/初始化程序/paper_trail.rb:

想法?其他有用的信息?

编辑: 尽管在初始化文件中引用了 paper_trail 3.0.3,gem 的版本是 3.0.5(通过执行 gem 列表验证)。错误跟踪中对 3.0.3 的引用适用于 Rspec。

0 投票
1 回答
47 浏览

ruby-on-rails - 质量控制系统是否正确使用 rails Paper Trails gem?

我正在使用 rails 4 并构建了一个系统,我的用户可以在其中创建一个“博客”,然后该“博客”、它的属性和关系由其他用户查看。审稿人可以对其进行调整。我正在构建自己的 QualityReview 模型,它有很多标记,但后来我遇到了 Paper Trail https://github.com/airblade/paper_trail似乎我可以让用户直接更新模型然后返回如果评论被证明无效,则与模型历史记录一起使用。

有没有人用 PaperTrail 做这样的事情?

0 投票
0 回答
129 浏览

ruby-on-rails - 在 paper_trail 中的 has_one 更改上创建版本

我有一个belongs_to / has_one 关系,并且正在使用paper_trail gem 进行跟踪/版本控制。当我在 has_one 模型上更改属性时,版本是在 belongs_to 一侧创建的,而不是在我进行更改的一侧。

举个例子:Student has_one Locker Locker belongs_to Student

我可以从双方编辑这个关系,目前我只能对储物柜侧(最后使用储物柜的学生)进行版本控制。我还需要一个相反的历史——学生使用了什么储物柜。

当然,如果每次我点击 update 都会创建版本,这将是完全可以的,但是 paper_trail 很聪明,并且只有在 attrbute 实际更改时才会创建一个版本。由于储物柜关系不在学生模型中,因此未创建版本(尽管我创建了 dmy 自己的元信息属性来存储附加信息)。

那么,有什么方法可以做到这一点并且它并不难看:)(例如,我可以对其他一些属性进行一些小改动,比如放入一个空格或其他东西以便创建该版本 - 但那是矫枉过正并且是丑陋)

谢谢