在OpenStruct中使用marshal_load

Cod*_*Ray 3 ruby openstruct

如何使用OpenStruct的marshal_load实用程序?它似乎没有按预期工作.

文档提供了这个示例,但它似乎不起作用.

require 'ostruct'

event = OpenStruct.new
hash = { 'time' => Time.now, 'title' => 'Birthday Party' }
event.marshal_load(hash)
event.title # => nil
Run Code Online (Sandbox Code Playgroud)

如果不是这样,我如何将哈希加载到OpenStruct(不使用构造函数)?

对于上下文:我正在从YAML文件加载哈希并将其加载到OpenStruct子类的现有实例中.

Kas*_*yap 5

尝试使用基于符号的哈希.这对我有用.

#works.rb

hash = { :time => Time.now, :title => 'Birthday Party' }
event.marshal_load(hash)
Run Code Online (Sandbox Code Playgroud)