Ich habe zwei Modelle:belongs_to mit verschiedenen Fremdschlüsseln sowie Primärschlüssel in der anderen Tabelle
Ticket
und User
Ein Ticket belongs_to einen Benutzer und ein Benutzer has_many Tickets.
Die Sache hier ist, dass ich diese beiden Modelle mit verknüpfen möchten:
Das Ticket hat eine ref_token
Spalte und der Nutzer hat eine token
Spalte. Also, im Grunde, wenn der Benutzer für einen bestimmten Token zu finden versuchen (token123), würde ich die folgende Abfrage erwarten:
SELECT * FROM tickets WHERE token = 'token123'
Wie kann ich die Vereinigung, um dies zu erreichen (im Grunde ich die Spalten angeben möchten, setzen Assoziation. In diesem Fall unterscheiden sie sich von den Primärschlüsseln).
Ich habe das jetzt:
User
has_many :tickets, foreign_key: 'ref_token', primary_key: 'token'
Ticket
belongs_to :user, foreign_key: 'ref_token', primary_key: 'token'
Und ich bin in der Lage user.tickets
zu tun, aber ich kann ticket.user
nicht tun. Es wird immer nil
zurückgegeben.
Warum Sie Token Spalte für 'verwenden möchten token.user' es nur mit' has_many gehandhabt werden können: Tickets, foreign_key: ‚ref_token'' –
Schauen Sie in Ihre log - was sql wird in dem nicht arbeitenden Versuch ausgeführt? –