2016-04-11 13 views
0

Ich habe eine Tabelle "Benutzer", aber ein Benutzer kann ein Manager eines anderen Benutzers sein, ein Benutzer könnte auch ein Manager von vielen anderen Benutzern sein, so dass es eine Eins-zu-viele-Beziehung ist und nur eine Tabelle inviviert . Heres mein Ansatz:Wie füge ich fremder_key hinzu, der auf dieselbe Tabelle zeigt?

1.Ihe 'manager_id' (die wirklich speichert eine andere Uers ID) Spalte Benutzer Tabelle hinzugefügt.

2.I've definierte Beziehung in Benutzermodellklasse:

belongs_to :manager, foreign_key: 'manager_id',class_name:'User' 
    has_many :minions, class_name:'User' 

Nun, sagen wir in Schienen-Konsole, wenn ich seinem einen Benutzer manager_id 'auf einen anderen Benutzer-ID alle in Ordnung. aber wenn ich Methoden wie 'user.manager' oder 'user.minions' benutze, heißt es, dass diese Methoden nicht definiert sind. War ich falsch gelaufen?

+0

Was ist die genaue Fehlermeldung? – Pavan

+0

NoMethodError: undefined Methode 'Minions 'für # EasternDude

+0

Sie sollten mit einer Instanz der Klasse, nicht auf eine Klasse selbst tun. Versuchen Sie 'User.find (1) .minions' oder' User.find (1) .manager' – Pavan

Antwort

0

Ich glaube, Sie selbst Vererbung implementieren möchten, die als getan werden kann:

class User < ActiveRecord::Base 
    self.inheritance_column = :child_class 
    has_many :minions, :foreign_key => :parent_id, :as => :parent 
    belongs_to :parent, :polymorphic => true 
end 

Dies ist nur eine Skizze von dem, was ich aus der obigen Beschreibung verstanden, es verbessert werden kann.

+0

nicht ganz. Ich denke das Problem ist, dass keiner der Benutzerbeziehungen geladen ist. Ich habe GENAU dasselbe auf Test Dummy Klassen und es funktioniert! auch, um dies zu verdeutlichen, ich habe Klasse Ziel es hat 'user_id' Spalte und ist mit dem Benutzer verwandt: **** gehört_to: Benutzer, Foreign_key: 'Benutzer_ID', Klassenname: 'Benutzer' ** ** jetzt in einer Konsole, wenn ich objective.user tun es korrekte Benutzer zurückgibt. obwohl ich auch eine Beziehung in user definiert habe: **** has_many: objectives **** wenn ich versuche, etwas wie 'user1.objectives' zu tun, löst es einen nicht definierten Fehler erneut aus ... Warum passiert das? – EasternDude

Verwandte Themen