散列的纸张跟踪字符串

Oss*_*sie 2 ruby hash ruby-on-rails 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"
Run Code Online (Sandbox Code Playgroud)

我正在使用paper_trail宝石并尝试对非相邻版本进行差异化.这使我无法使用内置"changeset"哈希,这就是我想要的.

使用许多正则表达式,我可以处理这些字符串,但我想把它们变成哈希,"description"把它作为一个键,接下来的两个项目就是value.firstvalue.last.

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

Kyl*_*yle 7

您应该使用version.changeset获取对象更改的已解析哈希值.

如果你真的想将该字符串转换为ruby对象(ActiveSupport::HashWithIndifferentAccess),你可以:

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)
Run Code Online (Sandbox Code Playgroud)

请参阅Papertrail :: VersionConcern.changeset