2016-10-19 18 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

fHashインスタンスではない、ActiveRecord::BaseFooから継承するクラスのインスタンスです。

それは(keyを使用して)値だことにより、属性の名前を取得するには、fさんActiveRecord::AttributeMethods#attributes最初のハッシュを取得する必要があります:

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

差が

にどのようなものです集計:オブジェクトのクラスで定義されているインスタンスメソッドの違い。

+1

うわー!私はそれを知らなかった。まだ勉強してる。だから 'f.attributes'はハッシュですか? OK。 – Sylar

+1

あなたはこれを行うことができないか分かりませんでした。 –

関連する問題