我有个杂烩

foo = {'bar'=>'baz'}

我想打foo.bar #=> 'baz'

我的动机是将activerecord查询重写为原始sql查询(使用模型#find_by_sql).这将返回一个以SELECT子句值为键的哈希.然而,我现有的代码依赖于对象.方法点表示法.我想做最少的代码重写.谢谢

编辑:Lua似乎具有以下功能:

point = { x = 10, y = 20 }   -- Create new table
print(point["x"])            -- Prints 10
print(point.x)               -- Has exactly the same meaning as line above

推荐答案

>> require 'ostruct'
=> []
>> foo = {'bar'=>'baz'}
=> {"bar"=>"baz"}
>> foo_obj = OpenStruct.new foo
=> #<OpenStruct bar="baz">
>> foo_obj.bar
=> "baz"
>>

Ruby相关问答推荐

Ruby Case语句和固定,不适用于attr_reader

Ruby 扁平化 JSON 对象或哈希

当我在 Ruby 中围绕最后一个字符拆分时,如何拆分字符串?

环绕分隔线,保留第一列,最小最终长度

仅在模块中列出方法?

bundler 可以告诉我 Gemfile 中的哪些 gem 有更新的版本

为什么 Range 在下降时不起作用?

如何在Ruby中从字符串中go 除前导和尾随引号

截断、事务和删除数据库策略的区别

Ruby数组each_slice_with_index?

如果尚未定义,则设置 Ruby 变量

为什么在 ruby​​ / rails / activerecord 中并不总是需要 self ?

使用 for each 时识别最后一个循环

如何在不等式中使用Ruby case ... when?

Ruby中的urldecode?

安装 Jekyll 时出错 - 本机扩展构建

obj.nil?与 obj == nil

在 Ruby 中使用元组?

为什么 Ruby setter 需要self .班级内的资格?

带有类名的动态类定义