Question

J'ai deux modèles: Show et Lieu . Show a un lieu alors que chaque lieu appartient au spectacle. Cette condition est définie dans les deux fichiers de modèle avec has_one & amp; Les instructions appartiennent_à correctement. Cependant, je ne peux pas accéder à la salle en faisant show.venue . Considérez le code suivant où s est une instance Show :

logger.info("*********************")
logger.info("#{s.inspect}")
logger.info("#{Venue.find(s.venue_id)}") # Works
logger.info("#{s.venue}") # Causes a MySQL Error
logger.info("*********************")

Je sens que la ligne qui cause l'erreur MySQL devrait fonctionner. C'est l'erreur:

ActiveRecord::StatementInvalid (Mysql::Error: Unknown column 'venues.show_id' in 'where clause': SELECT * FROM `venues` WHERE (`venues`.show_id = 95)  LIMIT 1)

Je ne sais pas pourquoi il essaie d'accéder à locaux.show_id . Des idées?

Était-ce utile?

La solution

Vous avez les clés étrangères inversées. Dans les conventions d'ActiveRecord, la classe avec le appart_to devrait devrait être mappée à la table de la base de données avec la clé étrangère. Voir la API ActiveRecord : " l'association apart_to est toujours utilisée dans le modèle qui a la clé étrangère. " Cela a du sens, si vous réfléchissez à la façon dont appartient_pour interagir avec has_one et has_many (vous ne pouvez évidemment pas insérer les clés étrangères dans le modèle has_many).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top