2016-03-31 5 views
1

Ich finde mich oft in der gleichen Situation in Rails. Ich habe einen Hash, der in etwa einem Model entspricht, und ich möchte herausfinden, ob es eine Instanz des Modells gibt, das mit allen Schlüssel/Wert-Paaren im Hash übereinstimmt. Hat Rails eine Möglichkeit dies zu tun? Wenn nicht, gibt es eine Bibliothek/Funktion von Drittanbietern, die ich einbeziehen kann?Finden Sie Artikel, die einen ganzen Hash entsprechen

Zum Beispiel würde ich lieben, wie etwas zu tun:

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 

Antwort

1

Ist Person ein Active Modell? Diesen

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

funktionieren würde, wenn Ihr person_hash hat ein eindeutiges Feld

haben Sie

versucht. Wenn beispielsweise nur eine Person den Namen John Doe hat, funktioniert das obige Beispiel.

Ansonsten

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

Sie können Sie von