通过它的值获取属性的名称

Syl*_*lar 3 ruby activerecord ruby-on-rails ruby-on-rails-5

我需要使用value我的模型中已知的密钥返回密钥。

f = Foo.find_by(name: "dave")
#= returned object: {id: 1, name: "dave", age: 32}
f.key("dave") # expected :name or name
Run Code Online (Sandbox Code Playgroud)

value将是独一无二的。如何获得属性?我问的问题正确吗?

请问这有什么区别?

hash = { "a" => 100, "b" => 200, "c" => 300, "d" => 300 }
hash.key(200) #=> "b"
Run Code Online (Sandbox Code Playgroud)

And*_*eko 5

fFoo类的一个实例,它继承自ActiveRecord::Base,它不是一个Hash实例。

要通过其值(使用key)获取属性的名称,您必须首先获取f's ActiveRecord::AttributeMethods#attributes的哈希值:

f.attributes.key('dave') # `attributes` method returns a Hash instance
#=> "name"
Run Code Online (Sandbox Code Playgroud)

有什么不同

总结一下:对象的类中定义的实例方法的区别。

  • 不知道你能做到这一点。 (2认同)