问题标签 [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 投票
2 回答
1233 浏览

ruby-on-rails-3 - 使用 Rails 3 使用 paper_trail 进行测试

我正在尝试在 Rails 3 中使用 paper_trail v2.6.3 的示例,方法是遵循 paper_trail 的Github 文档。我想为一个模型编写一个规范,让我检查它的版本是否在 paper_trail 下,例如:

并且 be_trailed 应该是一个自定义的 rspec 匹配器,它应该检查模型是否是版本化的。

我如何编写规范?

PS我不想还原版本。我只是想检查它是否有版本。

我按照 Michael Hartl 的Rails 教程在 demo_app 上使用它:

0 投票
1 回答
788 浏览

ruby-on-rails - Rails PaperTrail 版本控制

我正在使用 Paper Trail gem 对我的模型之一进行版本化。

它工作得非常好,我在它记录版本时进行了改进,以便它只跟踪批准产品的更新,这部分工作正常。

我还需要做的是捕获批准的版本。自然,在批准时,我的已批准字段设置为 false,因此它不会捕获版本。有谁知道我如何修改下面我的产品模型中的行来实现这一点?

编辑:似乎 papertrail 不适用于自定义控制器操作。任何人都可以验证吗?

0 投票
2 回答
1833 浏览

ruby-on-rails - Rails & Papertrail - 在查询中包含以前的版本

我正在创建一个应用程序,在创建和更新文章时需要管理员批准。我使用书面记录来完成此操作,将每次更新存储到文章中。

更新文章时,“已发布”字段设置为 false。因为我想显示文章的最新批准/发布版本,我需要一种范围来检查文章的当前版本是否被批准,如果不是,它会搜索以前的版本,直到找到批准/发布的一个。

现在,由于我在map这里使用,我的查询返回一个数组而不是 ActiveRecord 关系。我想在已发表的文章上链接其他查询,所以这是一个问题。

例如,我想做: Article.published.where(...).order_by(...)

有什么想法可以做到这一点吗?

0 投票
1 回答
357 浏览

ruby-on-rails - paper_trail 并保持关系不变

是否有可能强制 paper_trail 在版本更改时不更改关系?

我的应用程序是一个投注软件,我需要让用户投注在他投注时处于活动状态的那个,保留改变赔率的可能性。

0 投票
1 回答
1173 浏览

ruby-on-rails - papertrail,设置管理员用户

我在模型上使用 state_machine 和 papertrail gem(rails 3.2)

我想跟踪所有状态变化以及是谁发起的,papertrail 就像一个魅力。

现在我遇到了一种情况,系统通过 rake take 来改变对象的状态。

我如何告诉系统谁是来自 rake 任务的 current_user(我正在使用设计)?

我想将该用户设置为管理员用户,以便 papertrail 可以存储 whodunnit。

0 投票
2 回答
2874 浏览

ruby-on-rails-3.2 - Rails 3.2 应用程序 - 我应该使用版本控制 gem(paper_trail 或 vestal_versions)还是手动处理?

我的问题:我应该推出自己的模型版本控制还是使用已经存在的版本控制 gem 之一?如果我应该使用 gem,哪个看起来最适合这个应用程序?

关于我的应用程序的信息

我的应用程序是一个简单的清单应用程序。有清单和工作,我使用响应和提交来跟踪用户响应。响应告诉我使用说什么(“完成”,附注“我们需要更多拖把。”),提交告诉我该特定清单何时填写(因为可能有许多提交和给定的响应集清单)。如果有帮助,我将在下面显示我的关联。

我想用版本控制做什么

我想做的是记录用户对清单上的工作的反应。但我想确保如果清单发生更改,我可以重现原始清单(带有响应信息)。例如,我想确保我可以为所有以前版本的清单回答这个问题:

“清单是什么样的,三个星期二前的反应是什么?”

如果我更改清单或其任何工作,我不想失去该问题的答案。

我认为最好的方法是使用版本控制(用于作业和清单)。例如,如果管理员更改了作业(名称或描述),那么我不会更新现有作业,而是创建一个新版本并保持旧版本不变。然后我把旧的东西留在原地,把清单指向工作的新版本。

我应该使用宝石还是自己滚动?

我试图决定是我应该自己推出(编写代码以增加版本,将所有内容指向版本,并保留以前的版本)还是使用现有的解决方案。两个最好的解决方案似乎是paper_trail 和vestal_versions。我没有足够的声望点来发布两个以上的链接,所以我将链接到 gem 的每个 Railscast(如果你愿意,它会让你到 gem 本身)。Railscast 255 Undo with paper_trailRailscast 177 Model Versioning - 177 使用vestal_versions。

自己滚动的优点:

  • 我需要通过重建清单及其响应来报告所有历史数据。这是该应用程序的主要功能。看起来这对于我提到的宝石来说会很棘手。
  • 我将能够报告版本组(“我想查看此作业的任何版本的所有回复”)。这样看起来很容易。

滚动我自己的缺点:

  • 这会很棘手,因为我有几个 has_many :through 关联。我必须非常小心地更新所有表并正确连接表。(这也可能是其中一颗宝石的问题)。
  • 由于我使用此版本数据进行报告,因此我担心性能问题。解析散列的计算成本似乎很高,而依赖带有索引的平面表似乎非常有效。
  • 这两个 gem 似乎更倾向于保留版本历史以进行跟踪,而不是真正用于维护历史信息以用于报告目的。

这似乎很重要,因为无论我决定什么,我基本上都会坚持下去。我认为以后从一种方法切换到另一种方法并不容易。

0 投票
2 回答
2435 浏览

logging - 日志服务 ala splunk、papertrail 等

Papertrail 是同类服务中唯一允许您通过 webhook 对记录的事件做出反应的服务吗?

我正在寻找一个托管的日志记录解决方案,例如 Splunk Storm 或 Papertrail。

0 投票
0 回答
400 浏览

ruby-on-rails - PaperTrail 和批处理版本控制

在我的 Rails 应用程序中,我有一系列可以在页面上重新排序的对象(每个对象保存其相对于页面上其他对象的位置)。我想对这些对象的排列方式进行一些版本控制,以便我可以实现撤消/重做按钮。

我认为PaperTrail gem 可能是保存这些对象如何排序的树结构的好选择,但问题是当用户重新排列对象时,某些对象的位置可能会改变,而其他对象的位置可能不会改变,而 PaperTrail 仅似乎在对象已更改时保存版本。我真正想要的是可以保存模型中所有对象状态快照的东西。有什么办法可以强制 PaperTrail 保存一个版本,这样我就可以调用类似的东西

撤消更改?还是有更好的方法来实现这一点?

例如(我正在对二维数组进行排序):

在进行更改之前:

进行更改后:

尝试撤消后:

请注意,对于第 1 步,位置应该是 1,但是由于对象在重新排列之前和之后没有改变,它恢复到最后保存的唯一版本,这是不正确的。

0 投票
2 回答
409 浏览

ruby - 未定义的方法'paper_trail_event ='

我遵循了 paper_trail gem 的极其简单的设置指南

在我的课上,我有

一切正常,直到我决定按照 paper_trail 指南设置我自己的跟踪事件:

PaperTrail 提供了一个名为 paper_trail_event 的自定义访问器方法,它将尝试使用该方法来填充事件字段,然后再返回默认事件之一。

所以现在,在我的一种模型方法中,我将事件设置为:

但是当我这样做时,我得到了这个错误:

未定义的方法`paper_trail_event ='

我究竟做错了什么?

0 投票
1 回答
1049 浏览

ruby-on-rails - PaperTrail 中的自定义表格与 Rails 4

我对 Rails 很陌生,并尝试使用PaperTrail来处理我所有模型的版本控制。我正在使用 PostgreSQL。我想将每个模型的版本表存储为一个单独的表,PaperTrailREADME向我保证这是可能的(尽管它在 Rails 3 分支中多次被标记为问题)。

如果我Version像这样子类化:

有没有办法让 PaperTrail 为我生成这个迁移?它似乎想要做的就是为版本表生成一个通用迁移。