使用Hash访问目标对象

时间:2013-11-27 19:00:16

标签: ruby-on-rails ruby hash

我有一个哈希如下。我需要知道是否可以访问display_name对象,以便返回Active Record值。

{ "actor"=> 
  { "id"=>1, "class"=>"User", "display_name"=>"#<User:0x007ffc8c498b18>" } 
}

我假设我可以,因为他们不会在第一时间添加它。我知道我可以使用id和class键,但必须有理由拥有目标对象。如果这是不可能的,为什么你认为他们添加了它,我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

不幸的是,您无法使用现有哈希执行此操作。与“display_name”键关联的值是一个字符串。这意味着您将无法获得所有用户方法和属性。如果我不得不猜测,我会说编写生成哈希的代码的人可能假设User类上有一个to_s方法,它将返回显示名称。

我会尝试其中一种方法:

  1. to_s添加User方法,该方法将返回您需要的名称。这可能会在您的哈希中存储适当的数据。
  2. 使用“id”键查找所需的用户,然后调用所需的属性。
  3. 修改创建哈希的代码,以便存储实际的User实例,而不是它的字符串表示。
  4. 修改创建哈希的代码,并存储用户的相应属性,而不是字符串表示形式。
  5. 听起来你想做上面的选项3。如果你这样做,我建议将“display_name”键重命名为“user”,以使你的存储更加清晰。