我想我曾经在rails项目中看到过一个不错的解决方案。我认为这个解决方案是在rails中构建的。
我想得到的是一个类似哈希的对象,它做了类似的事情:
jar = Jar.new #no defined methods 'name' in it!
jar.name #returns nil
jar.name = 'fu'
jar.name #return 'fu'
其中name
可能就像散列一样可能。我不想预定义它!
是否有一个帮助类可以在rails或类似的东西中执行此操作?
答案 0 :(得分:4)
您可以使用Ruby核心中的OpenStruct:
require 'ostruct'
person = OpenStruct.new
person.name = "John Smith"
person.age = 70
person.pension = 300
puts person.name # -> "John Smith"
puts person.age # -> 70
puts person.address # -> nil
另外,请查看documentation。
答案 1 :(得分:1)
您可以使用openstruct:
require 'ostruct'
=> true
o = OpenStruct.new
=> #<OpenStruct>
o.foo
=> nil
o.foo= 1
=> 1
o.foo
=> 1