问题标签 [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 回答
482 浏览

ruby-on-rails - 纸迹显示有许多对象

我正在使用 paper trail gem 来跟踪订单 Web 应用程序的版本更改。我无法显示 has_many 版本

订购型号:

订单项型号:

订单控制器:

历史html:

问题是找到.versions单个对象(来自.find)时的工作。但是,当将对象数组(来自.find_all_by)传递给.versions它时,它会返回此错误

0 投票
1 回答
2575 浏览

ruby-on-rails - 纸迹检索对象

我正在尝试检索纸迹已版本化的对象。但是,当我使用 .reify 时,它会检索以前的版本。不是最新的。

例如

控制器

看法

object = line_item.last.reify(options = {})object = line_item.next_version.reify(options = {})两者都返回未定义的方法错误。

如何检索适当的对象,以便可以交互和显示特定信息?

0 投票
0 回答
194 浏览

ruby-on-rails - 如何使用 paper_trail gem 存储创建者详细信息?

我有一个包含帖子的 rails (4.1.6) 博客应用程序。它为用户使用设计,我正在集成paper_trail gem 以进行版本控制。

在与 paper_trail 集成之前,每个 Post 都有一个 belongs_to :user,在 create: 的顶部填充了 current_user @post = Post.new(user: current_user)。但是,由于 paper_trail 存储项目的创建者,我想使用 @post.originator 来访问创建者。

在此博客应用程序中,只有登录用户才能创建帖子。在我的验证器中,我需要检查 @post.originator 是否存在,但是在验证我的帖子时,发起人是空白的(可能是因为在数据库中创建帖子之前,paper_trail 不会保存纸迹数据)。

因此,当我创建一个帖子并且验证器运行时,使用 originator 代替,我收到一个错误,即无法创建帖子,因为没有创建者。

我看到的选项是:

  1. 验证 user_signed_in?在控制器操作中,并且不对模型中的创建者(用户/发起者)进行验证
  2. 在我的所有模型中创建一个冗余用户字段来存储帖子的创建者,并将其用于验证
  3. 做1和2
  4. 不知何故(如何?)使 paper_trail 提供模型的发起者并在验证中使用它

我怀疑理想的方法是#3或至少#1或#2,但我想检查是否有任何方法可以实现#4。

谢谢阿南德

0 投票
3 回答
3589 浏览

ruby-on-rails - PaperTrail 手动创建版本

我有一个项目电子表格,我将其转换为 CSV 并使用自定义导入脚本导入到基于 Rails 的应用程序中。

电子表格包含每条记录的一行,但有些行包含先前行的不同版本。

导入 CSV 时,我目前使用“past_version”字段标记第二行,但我现在认为实现完整版本控制 gem 将是一种更好的方法。

我一直在阅读 PaperTrail 的文档,它看起来非常适合我所追求的,但是,我需要创建一些行的版本作为我的导入脚本的一部分。这可以用 PaperTrail 完成吗?

基本上我需要开始导入,比如正常添加记录 1、2、3、4、5,然后记录 6 实际上是记录 2 的更新版本,所以我现在需要手动创建 PaperTrail 版本。

这可能吗?

0 投票
2 回答
1902 浏览

ruby-on-rails - 如何使用带有 has_many 的 PaperTrail 版本控制:通过在 Rails 4 中实现关联

尝试使用 PaperTrail 进行版本控制我的关联没有恢复。我一定做错了什么。这是与我的类似设置。我正在使用 PaperTrail 的最新主分支。

这就是我正在做的事情。

b.colors 应该是空的。此外,当我向球添加颜色时,ball.versions 不包括更改。只有“添加颜色之前”的创建,更新,“添加颜色之后”的更新。有人可以告诉我我做错了什么或指出一个例子吗?我已阅读文档的关联部分,但无济于事。

0 投票
1 回答
186 浏览

ruby-on-rails - PaperTrail 使用 - 版本控制 - 审计

我有一个类“课程”,它有一个子类“主题”。 一门课程有很多科目。我希望使用 paper_trail - 4.0.0.beta1 版本来跟踪课程/主题的任何更改。

课程类别定义:

学科类定义:

我按照以下步骤操作:

  1. 创建了一个名为“数学”的课程 => 这进入了版本表。
  2. 创建一个名为“代数”的主题并分配给课程。
  3. 创建一个名为“科学”的主题并分配给课程。

现在,当我希望将课程对象恢复到第 1 步时,根据论文记录,我正在执行以下步骤:

old_course = course.previous_version.reify(has_many: true)

但这样做会让我返回包含两个主题的最新课程对象。我期待一个有 0 个科目的课程对象。我究竟做错了什么?

我想要完成的是,即使将主题添加到课程中,我也想将其视为课程的更改,并且应该为它创建一个版本,当我转到任何以前的版本时,我应该能够看到该课程当时的所有科目。

0 投票
1 回答
886 浏览

ruby-on-rails - Rails 显示 PaperTrail 版本的视图

我对 PaperTrail 有一个非常奇怪的用例。在我的场景中,一个版本基于发生的物理事件。因此,我的模型版本只有在我说的时候才会创建。

因为以上。我希望这些版本能够做到以下几点:

当我运行类似的东西时Model.all,这应该会按预期忽略版本,但在某些情况下,我希望版本能够正常返回,因此我需要能够执行类似Model.withVersions返回所有当前记录和所有相关版本的操作。这可能吗?

此外,我需要能够为版本构建页面。即:Rails 显示操作和视图。

我将如何做到这一点?我需要能够制作指向其中一个页面的链接,该链接将输出类似于/model/23将您带到有关该项目的特定版本的页面的内容。

我知道这是一个奇怪的问题,但想知道是否有人会对这个奇怪的用例有任何意见,以及我如何有时将版本带到前台以像现有事物一样工作,而有时则像平常一样留在后台。

0 投票
5 回答
7199 浏览

logging - 浏览器中的 Logstash 日志尾部

因此,我使用 logstash-forwarder(lumberjack) 设置了带有 ElasticSearch 和 Kibana 的 Logstash 1.4.2,效果很好,但我还想通过类似于 papertrail 之类的浏览器显示原始日志输出(可能是可搜索的)?

这个可以吗,谢谢!

0 投票
0 回答
310 浏览

ruby-on-rails-4 - 为什么 paper_trail gem 试图在 Rails 4.2/Ruby 2.2.0 中进行空插入?

我有一个最近升级到 Rails 4.2.0 和 Ruby 2.2.0 的应用程序。自升级以来,我在生产环境中看到以下异常:

Mysql2::Error: 字段 'item_type' 没有默认值:INSERT INTO versionsVALUES ()

这似乎并非始终如一地发生。我只知道这种情况的存在是因为 ExceptionNotification 电子邮件与其他用户发生了这种情况。我多次尝试重新创建该问题,但尽管执行了发生这种情况的相同代码,但它从未发生在我身上。

另外我想提一下,在所有调用 has_paper_trail 的模型中,我没有传递任何选项,因此对跟踪的属性没有限制。似乎如果正在插入一个版本,它应该总是有某种变化。

在我们从 Rails 3.2.11 和 Ruby 1.9.3 升级到 Rails 4.2.0 和 Ruby 2.2.0 之前,这种情况从未发生过。

我只是检查了 GitHub,根据 Gemfile.lock 看起来我们从 paper_trail 2.7.2 到 3.0.6。

是什么导致这种情况发生,如何解决?

0 投票
0 回答
30 浏览

ruby-on-rails - 保持 ActiveRecord 响应

在我的模型中,我有一个这样的方法:

Car.all.including_versions问题是我想在控制器中使用它,我可以通过调用which来做到这一点。然而,我的控制器随后继续对最后的 ActiveQuery 方法进行排序、排序和链接。我怎样才能将额外的东西链接到它上面,或者有没有一种方法可以在不使用数组并将其保持为 Active Record 响应的情况下执行上述操作?

谢谢