cbr*_*ron 5 ruby hash symbols ruby-on-rails instance-variables
我收到了格式的答复
#<Response:0x000... @first = "Charlie", @last=Kelly, ....
Run Code Online (Sandbox Code Playgroud)
我需要把它变成一个哈希(对于活跃的商人).目前我正在循环变量并执行此操作:
response.instance_variables.each do |r|
my_hash.merge!(r.to_s.delete("@").intern => response.instance_eval(r.to_s.delete("@")))
end
Run Code Online (Sandbox Code Playgroud)
这会产生,它会产生{:first = "charlie", :last => "kelly"}
,但它似乎有点hacky和不稳定.有一个更好的方法吗 ?
编辑:我刚刚意识到我可以将instance_variable_get用于该等式的第二部分,但仍然存在主要问题.
Rails有一个方法就是为此而Object调用instance_values.这是GitHub上的代码.
class C
def initialize(x, y)
@x, @y = x, y
end
end
C.new(0, 1).instance_values # => {"x" => 0, "y" => 1}
C.new(0, 1).instance_values.symbolize_keys # => {:x => 0, :y => 1}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1701 次 |
| 最近记录: |