nicht in der Lage Modell mit has_one Zusammenhang mit dem Zugang
-
03-07-2019 - |
Frage
Ich habe zwei Modelle: Show
und Venue
. Show hat einen Ort, während jeder Ort zu zeigen, gehört. Dieser Zustand ist in den beiden Modelldateien mit has_one
& belongs_to
Aussagen korrekt definiert sind. Allerdings bin ich den Ort zugreifen, indem Sie show.venue
nicht in der Lage. Betrachten Sie den folgenden Code, wo s ein Show
Beispiel:
logger.info("*********************")
logger.info("#{s.inspect}")
logger.info("#{Venue.find(s.venue_id)}") # Works
logger.info("#{s.venue}") # Causes a MySQL Error
logger.info("*********************")
Ich fühle mich wie die Linie, die der MySQL-Fehler verursacht sollte funktionieren. Dies ist der Fehler:
ActiveRecord::StatementInvalid (Mysql::Error: Unknown column 'venues.show_id' in 'where clause': SELECT * FROM `venues` WHERE (`venues`.show_id = 95) LIMIT 1)
Ich habe keine Ahnung, warum es versucht venues.show_id
zuzugreifen. Irgendwelche Ideen?
Lösung
Sie haben die Fremdschlüssel umgekehrt. In Active Konventionen sollte die Klasse mit dem belongs_to in der Datenbank-Tabelle mit dem Fremdschlüssel zugeordnet werden. Siehe Active API : „Der belongs_to Verein immer in der verwendet wird, Modell, das den Fremdschlüssel hat.“ Dies macht einen Sinn, wenn man über die Art und Weise denkt, die in Wechselwirkung mit sowohl has_one und has_many belongs_to (wie Sie offensichtlich nicht den Fremdschlüssel in dem has_many Modell setzen können).