2016-10-19 103 views
3

我需要從我的模型中返回帶有已知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" 
+0

你問的是給你的價值,你如何從具有該值的'activerecord'記錄中返回'key'的名字 –

回答

4

fFoo類,它從ActiveRecord::Base繼承的一個實例,它不是一個Hash實例。

要獲得屬性的名稱由它(使用key),你必須得到的哈希值fActiveRecord::AttributeMethods#attributes第一:

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

的區別是什麼

要總結一下:對象類中定義的實例方法的差異。

+1

哇!我從來不知道這一點。我還在學習。所以'f.attributes'是散列?好。 – Sylar

+1

不知道你能做到這一點。 –