Ruby on rails 使用哈希访问目标对象
我有一个如下的散列。我需要知道是否可以访问Ruby on rails 使用哈希访问目标对象,ruby-on-rails,ruby,hash,Ruby On Rails,Ruby,Hash,我有一个如下的散列。我需要知道是否可以访问display\u name对象,以便它返回活动记录值 { "actor"=> { "id"=>1, "class"=>"User", "display_name"=>"#<User:0x007ffc8c498b18>" } } {“演员”=> {“id”=>1,“class”=>“User”,“display_name”=>“#”} } 我想我可以,因为他们一开始就不会添加它。我知道我可以使用id键和类键
display\u name
对象,以便它返回活动记录值
{ "actor"=>
{ "id"=>1, "class"=>"User", "display_name"=>"#<User:0x007ffc8c498b18>" }
}
{“演员”=>
{“id”=>1,“class”=>“User”,“display_name”=>“#”}
}
我想我可以,因为他们一开始就不会添加它。我知道我可以使用id键和类键,但必须有理由使用目标对象。如果这是不可能的,你认为他们为什么要添加它,我可以用它做什么?不幸的是,你不能用现有的散列来做这件事。与“display_name”键关联的值是一个字符串。这意味着您将无法访问所有用户方法和属性。如果让我猜的话,我会说编写生成哈希的代码的人可能认为User类上有一个返回显示名的
to\s
方法
我会尝试以下方法之一:
to_s
方法添加到User
,该方法将返回您需要的名称。这可能会在散列中存储适当的数据User
实例,而不是它的字符串表示形式听起来你想做上面的选项3。如果您这样做,我建议将“display\u name”键重命名为“user”,以便更清楚地显示您存储的内容。“我假设我可以”不,您绝对不能。没用。我们不可能猜到“他们”为什么加上它,我们只能假设他们加错了。你觉得这像是“显示名称”吗?如果这是你的实际结构,那么看起来某个地方有一个bug,因为这看起来像是Object#inspect的结果,而不是对象本身被设置为哈希中的值。@meagar哇……我不知道这是否是我阅读你消息的方式,但请不要粗鲁。我问这个问题是因为我不知道,这就是为什么我来找你@Chuck谢谢,我会查看一下代码,看看这里是否使用了
对象#Inspect
。可能是类应该提供的实际“显示名称”的回退值(User#to#s
)。这就是代码所做的显示名称:target.to(u
)@Stefan我认为你的回退可能是对的。在找到这篇文章后,我最终选择了选项1,这有助于解释发生了什么:。不过,我会接受你的回答,因为你已经解释了许多不同的解决方案。