2016-03-31 23 views
1

Railsで何度も同じ状況に陥っていることがわかりました。私はおおよそモデルに対応するハッシュを持っており、ハッシュのすべてのキー/値のペアと一致するモデルのインスタンスが存在するかどうかを調べたいと思っています。 Railsにはこれを行う方法がありますか?そうでない場合は、私が含めることができるサードパーティライブラリ/機能はありますか?ハッシュ全体に一致するアイテムを見つける

person_hash = { name: "John Doe", favorite_color: "chartreuse" } 
p = Person.ultra_cool_find(person_hash) 

puts p.name=="John Doe"    #true 
puts p.favorite_color=="chartreuse" #true 

答えて

1

試してみてください:

Person.find_by(person_hash) 

Railsのドキュメント:

例えば、私のような何かをするのが大好きだhttp://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find_by

+0

うわーで検索したい項目ごとに場所を追加することができます。私はそれのためのドキュメントを読んだが、それは他の何かをしたと思った。多分、休憩のためのその時間。ありがとう。 – Jeff

+0

そこに何度もいた;)。 –

1

は、人はActiveRecordのモデルですか?

はあなたperson_hashは、任意の一意のフィールドを持っている場合、これは動作します

p = Person.find_by(name: person_hash[:name]) 

を試してみました。たとえば、John Doeという名前の人が1人だけの場合、上記の例が有効です。

そうでない場合

p = Person.where(name: person_hash[:name]).where(favorite_color: person_hash[:favorite_color]) 

あなたは

関連する問題