Verwendung von Enum in Ruby und Rails Ein Memo zum Erinnern.
"Aufzählung" bedeutet "Aufzählungstyp". -DB ist als int-Typ oder boolescher Typ registriert, und jeder dem numerischen Wert zugeordnete Schlüsselname kann angegeben werden. -Im Quellcode wird der zugehörige Schlüsselname verwendet.
Vorteil -Wenn der Datentyp auf Ganzzahl gesetzt ist, wird er als Nummer in der Datenbank registriert. Wenn es sich jedoch nur um eine Nummer handelt, kann die Bedeutung der Nummer nicht geteilt werden. -Wenn Sie es als Zeichenfolge definieren, besteht eine hohe Wahrscheinlichkeit der Eingabe, aber wenn Sie enum verwenden, müssen Sie sich darüber keine Gedanken machen. ・ Leicht zu korrigieren.
Sie müssen eine Aufzählung für Ihr Modell definieren. Es gibt zwei Möglichkeiten, es zu definieren. ** 1. Nur Definition ** ** 2. Geben Sie in der Definition einen numerischen Wert an **
Mit einem Array definieren. Sie sind in der Reihenfolge von 0 in der Reihenfolge der Definition verknüpft. Im folgenden Beispiel werden gestern → 0, heute → 1, morgen → 2 automatisch sortiert. Name der Aufzählungsspalte: Geben Sie die Aufzählung mit [: Schlüsselname an, den Sie angeben möchten].
** * [] Nanoto: Achten Sie auf die Position **
Modelldatei
Name der Aufzählungsspalte: [ :gestern, :heute, :Morgen]
↑ Was ist zu definieren?
enum Spaltenname: {Schlüsselname, den Sie hinzufügen möchten: Entsprechende Nummer}, um die Aufzählung anzugeben. ** * {} und: Achten Sie auf die Position **
Modelldatei
Name der Aufzählungsspalte: {gestern: 0,heute: 1,Morgen: 2 }
↑ Was ist zu definieren?
Sie können ein Auswahlfeld mit der folgenden Beschreibung erstellen. ** Spaltenname und mehrere Spaltentypen sind dieselbe Spalte und die nach Aufzählung beschriebene Spalte ** ** Der Modellname ist das zum Zeitpunkt der Definition beschriebene Modell **
Datei ansehen
<%= select :Spaltenname, :name,Modellname.Spaltenname複数形.keys.to_a, include_blank: true %>
・ Ich habe es verwendet, wenn ich den Status geändert habe oder wenn der Status in Verbindung damit geändert wurde. ・ Beim Vergleich mit if usw. auf dem Controller denke ich, dass Sie mit definierten Zeichen anstelle von Zahlen vergleichen können. Beispiel) wenn Informationen, die Sie vergleichen möchten == "Gestern" Beispiel) Informationen, die Sie finden möchten .where (Spaltenname: "heute") .count usw.
Recommended Posts