2012-04-12 25 views
1

Ich habe ein Problem Brauchen Ihre Hilfe: Es gibt 1 Modell Mitarbeiter mit 1 Attribut "employee_type". Ein Mitarbeiter hat nur einen Typ. Es gibt 3 Arten von Angestellten ("Anfänger", "normal", "Profi", vielleicht in der Zukunft erhöhen). Also ich denke, es gibt 3 Möglichkeiten, es zu implementieren.rails association hat einen

  1. employee_type Attribut ist Zeichenfolge Typ, es ist "Anfänger" oder "normal" oder "pro". Dann in Helfer, ich muss Methode für Anzeige 3 Typ in der Auswahlbox-Ansicht definieren. Auf diese Weise, Nachteil ist "immer wenn ich mehr Typ hinzufügen möchte, muss ich in Rohcode einfügen"
  2. Create employee_type Tabelle mit nur 3 Datensatz "Anfänger", "normal", "pro". Und das Attribut employee_type ist ein Integer-Typ, der die ID des Datensatzes der Tabelle employee_type speichert. Mitarbeiter Tabelle und Mitarbeiter_Tabelle haben keine Zuordnung. Auf diese Weise ist es einfacher, mehr Typen einzufügen. Nachteil ist, "wenn ich Art des Angestellten finden möchte, muss ich EmployeeType.find (employee.employee_type) ausführen"
  3. Create employee_type Tabelle, hat Beziehung 1-1 mit Mitarbeiter und verwenden has_one. Auf diese Weise ist es leicht, den Typ des Angestellten nach Mitarbeiter zu finden.employee_type. Nachteil ist schwer zu verwalten, wie viele Arten von Mitarbeiter

Gibt es einen besseren Weg als sie?

Vielen Dank

Antwort

2

Es ist eine Eins-zu-viele-Fall. Sie müssen das folgende Schema verwenden:

class Employee < ... 
    belongs_to :employee_type 

class EmployeeType < ... 
    has_many :employees 
+0

Es ist nur Eins-zu-Eins-Beziehung. Ein Mitarbeiter hat nur einen Typ – banhbaochay

+1

Nr. Ein Mitarbeiter hat einen Typ, aber ein Typ kann mit vielen Mitarbeitern verbunden sein. – jdoe

+0

Oh, ich verstehe deine Idee. Also muss ich Mitarbeiter_Typ_ID hinzufügen und die Beziehung 1-n für Mitarbeiter_Typ und Mitarbeiter erstellen. Vielen Dank, danke – banhbaochay