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?

War es hilfreich?

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top