Beste Weg, um Enum-Wert in ActiveRecord und konvertieren zu einem string für die Anzeige
Ich versuche, herauszufinden, was ist der beste Weg, um ein enum-Wert in activerecord, sondern wandeln Sie es in ein 'Titel' für die Anzeige in einer app.
I. E.
Abgeben Enum:
UNREVIEWED = {:title => "Unreviewed", :name => "UNREVIEWED"}
REVIEWED = {:title => "Reviewed", :name => "REVIEWED"}
FLAGGED = {:title => "Flagged as inappropriate", :name => "FLAGGED"}
So, in java-land I wurde verwendet, um die Speicherung von Enumerationen, die Namen ie (GEPRÜFT) in der Datenbank und wandelt dann diese Namen in die eigentliche enum auf dem server, so dass ich nennen könnte helper-Methoden auf, dh:
review = Review.valueOf(review)
review.title()
Gibt es etwas ähnliches kann ich in rails um dies zu erreichen?
Zur info wir versuchen, unsere app super klein, so dass wenn ich können ganz einfach erreichen dies, oder etwas ähnliches, ohne ein JUWEL, das wäre toll.
Alle "standard" - Weg, dies zu tun, wie ich mir das vorstelle ich bin nicht der erste, der den Kampf mit diesem Problem?
Dank!
InformationsquelleAutor der Frage lostintranslation | 2013-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
ActiveRecord-enums ist der beste Weg zu gehen, da es ein Teil des Rahmens (seit version 4.1).
Seine Nutzung ist ganz einfach:
Migration:
Modell:
Verwenden Sie dann ein:
Modus Informationen finden Sie Dokumentation.
InformationsquelleAutor der Antwort alexs333
gibt es eine Menge Beiträge zu diesem Problem, ich denke, dass diese Punkte zu den meisten von Ihnen: http://thinkinginrails.com/2010/04/using-enums-for-constants/
ich denke, dass dies ist ein over-engineered Sache, dass Sie nicht brauchen, in einer dynamisch typisierten Sprache wie ruby.
nur Zeichenfolgen verwenden!
könnte man dann verwenden, wie:
InformationsquelleAutor der Antwort phoet
@Godsaur Beispiel.
Können Sie den string-Wert als:
Aber wenn Sie wollen, ein "Titel" können Sie:
InformationsquelleAutor der Antwort Ramon Carlos
Während ich damit einverstanden, dass @Godsaur Antwort ist richtig - ich persönlich glaube nicht, wie der Ansatz, die Speicherung der integer-Werte repräsentieren, sinnvollen Entsprechungen Zeichenfolge (vorausgesetzt, dass Sie genug, Datenbank-Indexierung vorgenommen wird, und/oder die Kosten von Abfrage-strings in die DB-engine ist ähnlich wie bei Abfragen ganze zahlen).
Mein Ansatz ist in der Regel speichern Sie die text-Werte in der Datenbank (zum einfacheren Verständnis des DB-records).
my_model.rb
my_view.erb
InformationsquelleAutor der Antwort tamersalama
Stimme ich mit @tamersalama. Hier ist ein einfacher Weg, es zu tun mit strings in der DB mit einem benutzerdefinierten Enum-Klasse. Beachten Sie, dass dies auch unterstützt Menschen lesbare Namen für die Verwendung in dropdown-Menüs.
https://gist.github.com/alexch/a7be54e1b085718473ff
SQL:
Schienen:
HTML:
InformationsquelleAutor der Antwort AlexChaffee