- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否可以使用 papertrail 实现以下用例 gem ?
维基百科类型的应用程序,其 wiki 页面登录的用户可以更改/编辑,其中:
--with-changes
选项(它注册除了更改资源的完整转储之外所做的更改)与 papertrail 注册已进行更改的用户这一事实相结合。我的理解正确吗?diffy
结合使用的信息确定确切更改了什么,但我不明白为什么教程使用 diffy
当 papertrail 本身已经提供了“差异化”功能时? 最佳答案
1.版主可以撤消特定的更改
您可以使用以下模块实现此功能:
module Revertible
SKIP_FIELDS = [ 'updated_at' ]
def revert_to(version)
raise 'not version of this model' unless self == version.item
changes = version.changeset.select{ |k, v| not SKIP_FIELDS.include?(k) }.map{ |k,v| [k.to_sym, v[0]] }.to_h
self.update_attributes(changes)
end
end
revert_to
模型的方法,它允许版主仅撤消特定编辑中的更改。关注
SKIP_FIELDS
数组,其中不包括不应还原的几个系统字段。
create_table :articles do |t|
t.string :title
t.string :body
t.timestamps null: false
end
class Article < ActiveRecord::Base
include Revertible
has_paper_trail
end
class ArticleTest < ActiveSupport::TestCase
test "rollback specific edit" do
article = Article.create(title: 'My Article 1', body: 'first version')
article.update_attributes(title: 'My Article 1', body: 'second version')
article.update_attributes(title: 'My Article 3', body: 'third version')
assert_equal 3, article.versions.count
assert_equal 'My Article 3', article.title
assert_equal 'third version', article.body
article.revert_to article.versions[1]
assert_equal 4, article.versions.count
assert_equal 'My Article 3', article.title # title haven't changed
assert_equal 'first version', article.body # body did change
end
end
class ApplicationController
def user_for_paper_trail
user = current_user
return 'public' if user.blank?
user.username
end
end
versions = PaperTrail::Version.where(whodunnit: 'dimakura')
version = versions.first
version.item # => #<Article id: 1, title: "...", body: "...">
version.event # => "create"
version.changeset
diffy
的问题.如果您唯一需要的是获得两个相邻版本之间的差异,那么您实际上并不需要它。但是,如果您需要比较由多个编辑分隔的版本之间的更改,那么您确实需要
diffy
或任何类似的图书馆。
关于ruby-on-rails - Paper_trail gem 技能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32348047/
Ai时代的产品经理 随着人工智能(AI)的飞速发展,AI已经从一个前沿技术概念逐步演变为驱动各行业创新的核心力量。从智能助手到自动驾驶,从个性化推荐系统到图像识别,AI正在以不可思议的速度改变着
我在我的 Azure 帐户上创建并部署了 Node.js 机器人。我还添加了 Cortana channel ,并启用了通过连接服务管理用户身份和请求用户个人资料数据(此处我有 User.Info.E
上个学期我介绍了 Java 中的面向对象编程,下学期我将学习 Java 计算机科学 2,它基本上学习用 Java 实现的各种算法和数据结构,例如链表、二叉树等。 ..我可以通过哪些方法来巩固在面向对象
我想在网站中添加水平滑动效果。这更像是网站中的“我们是谁”、“我们的技能”、“我们的服务”、“我们的投资组合”:http://markline.org/或者类似于 http://greenacrein
我是一名 C++ 开发人员(主要是 ATL/COM 的东西),直到 2001 年我和我们中的许多人一样转向 C#。从那时起我就没有做过太多 C++ 编程。 关于如何重振我的 C++ 技能,您有什么建议
即使代码必须由 dba 授权或创建,创建表和索引等对象也是必不可少的。有经验的开发人员应该注意哪些其他通常由 dbas 执行的领域? 最佳答案 开发人员有责任尽一切努力使他的代码a)正确并且b)快速。
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
食物语宫保鸡丁 获得方式 1、玩家通过限时食魂召唤活动中抽取的方式获得宫保鸡丁。 2、玩家通过主线关卡有几率掉落不同品质的宫保鸡丁。 3、玩家可以使用100个宫保鸡丁信物兑换宫保鸡丁食魂。
白狼属性 阴阳师白狼40级后,各项属性基本上就是一个输出式神的正常数值,攻击有3000,生命防御会比辅助类的式神低一些,速度暴击都是S。 白狼技能分析 【文射】:普通攻击,白狼射出注入了妖
我需要修改我发布的 Alexa 技能。我熟悉亚马逊在发布技能后自动创建的“开发中”技能版本。我不明白的是我如何迭代我的技能,特别是当我需要同时更改交互模型和链接的 Lambda 函数时? 例如,我可以
我想知道是否可以使用 papertrail 实现以下用例 gem ? 维基百科类型的应用程序,其 wiki 页面登录的用户可以更改/编辑,其中: 版主可以撤消特定更改: 我知道 papertrail
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭10 年前。 Improv
我正在创建 Alexa 技能,我已经编写了几个自定义和默认 intent ,并且它们工作正常。 现在我想写一个后备 intent ,其中我想获得询问/发送到 Alexa 技能的确切语句,有没有一种方法
我正在学习 js 并创建简单的 Alexa 技能。我想更好地理解模板代码,我正在研究 https://ask-sdk-for-nodejs.readthedocs.io 上的文档但我找不到这个问题的答
我在美国和德国成功发表了我的第一项技能。在扩展到更多区域时,我遇到了无法在 DE 中重现的帐户链接问题。 在触发认证之前,是否有在多个国家/地区进行有效测试的最佳实践。到目前为止,我读到你应该更改亚马
设置完所有内容后,我在 Alexa 开发人员中测试技能时遇到此错误 请求技能的响应有问题,然后我将该 json 响应放入 lambda 测试中,得到以下结果 { "errorType": "TypeE
我希望能够通过我的 Alexa 技能运行内置或第三方技能。例如,我希望能够说 “Alexa,开始午睡” 并让 Alexa 关闭所有灯,启动特定的 Tune-In 电台,并设置 30 分钟的闹钟。但是我
我已经在我的技能中添加了 APL 支持,但现在我不明白如何检查设备是否有显示屏并因此支持 APL。在 Node.js 中看起来很简单,但 Python (3.7) 一直让我发疯。我已经尝试过提到的方法
我正在做 Hyperskill 加密 - 解密项目,描述如下,我遇到了问题。例如,如果我尝试加密字母 = a key = 1,则效果很好,输出将是:b。但如果 letter = z, key = 1,
我正在制作一个返回音频但仅持续 x 秒的函数。 如果用户说 给我放一首歌 x 秒 我正在播放歌曲,但需要在 X 秒后取消播放。因此,我的计划是在运行音频之前启动计时器 x 秒。然后,一旦计时器到时,就
我是一名优秀的程序员,十分优秀!