2017-10-19 3 views
0

Ich bin neugierig, wenn es eine schöne Möglichkeit gibt, auf ein Attribut des Modells als Variable zuzugreifen.Zugreifen auf verschiedene Modellattribute basierend auf bedingten

if I18n.locale == :ja 
     pref = Prefecture.all.find { |pr| pr.name == province } 
    else 
     pref = Prefecture.all.find { |pr| pr.name_e == province } 
    end 

So etwas wie diese Pseudo-Code:

...find { |pr| pr.(I18n.locale == :ja ? name : name_e) == province } 

habe ich versucht, den Block in einem proc speichern, aber ich don‘haben viel Erfahrung Procs (falls dieser Ansatz hier arbeiten). Danke für jede Hilfe!

+0

Ist dies ein ActiveRecord-Modell, auf das Sie zugreifen? – plasticide

Antwort

0
attr = 
case I18n.locale 
when :ja then :name 
else :name_e 

pref = Prefecture.find {|pr| pr.send(attr) == province} 
+0

Ah, ich habe #send vergessen! Danke für den Vorschlag, ich denke, das ist im Wesentlichen das, wonach ich gesucht habe. –

Verwandte Themen