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

时间:2016-10-19 15:12:55

标签: ruby-on-rails ruby activerecord 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

value将是唯一的。如何获取属性?我问的是正确的问题吗?

请问有什么区别?

hash = { "a" => 100, "b" => 200, "c" => 300, "d" => 300 }
hash.key(200) #=> "b"

1 个答案:

答案 0 :(得分:4)

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

要按其值(使用key)获取属性的名称,您必须得到f' s ActiveRecord::AttributeMethods#attributes的哈希值第一:

f.attributes.key('dave') # `attributes` method returns a Hash instance
#=> "name"
  

有什么区别

总结:对象类中定义的实例方法的差异。