Ruby on rails 要散列的文件跟踪字符串

Ruby on rails 要散列的文件跟踪字符串,ruby-on-rails,ruby,hash,paper-trail-gem,Ruby On Rails,Ruby,Hash,Paper Trail Gem,是否可以将字符串转换为散列,以便像散列一样对其进行迭代 "--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\ndescription:\n- Original text blah blah.\n- New text blah blah.\nupdated_at:\n- 2014-05-12 09:18:21.000000000 Z\n- 2014-05-12 09:19:33.748593000 Z\n" 我正在使用paper\u

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

"---
!ruby/hash:ActiveSupport::HashWithIndifferentAccess\ndescription:\n-
Original text blah blah.\n- New text blah blah.\nupdated_at:\n- 2014-05-12 09:18:21.000000000 Z\n-
2014-05-12 09:19:33.748593000 Z\n"
我正在使用
paper\u trail
gem并尝试对非相邻版本进行扩散。这使我无法使用内置的
“changeset”
散列,它满足了我的需要

使用许多正则表达式,我可以处理这些字符串,但我想将它们转换成散列,其中
“description”
将作为键,接下来的两项是
值。首先是
值。最后是

使用
调用该字符串。我怎么能把它称为散列呢?

您应该使用它来获得对象更改的解析散列

如果确实要将该字符串转换为ruby对象(
ActiveSupport::HashWithInferenceAccess
),可以:

str = "--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\ndescription..."
YAML.load(str)
# => {"description"=>["Original text blah blah.", "New text blah blah."], "updated_at"=>[2014-05-12 09:18:21 UTC, 2014-05-12 09:19:33 UTC]}

# or
PaperTrail.serializer.load(str)

请参见

如何创建此字符串的可能副本?它是由paper_trail gem自动创建的。至于可能的副本,我无法理解如何实现此问题的答案。我认为我无法使用version.changeset。正如我上面所说的,我正在研究非相邻版本,所以我根本不能调用变更集。我正在查看我的站点的所有类型的所有版本。这不适用于变更集。你会把你的密码放在哪里?在模型里?嘿!“PaperTrail.serializer.load(str)”是一种很好的方法。这是在用PaperTrail的方法,他们没有想到,对吧?杰出的回答得很好。