невозможно получить доступ к модели, связанной с has_one - PullRequest
0 голосов
/ 02 мая 2009

У меня есть две модели: Show и Venue. Шоу имеет одно место, в то время как каждое место принадлежит шоу. Это условие определено в обоих файлах модели с помощью операторов has_one & belongs_to. Однако я не могу получить доступ к месту проведения, выполнив show.venue. Рассмотрим следующий код, где s является экземпляром 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("*********************")

Мне кажется, что строка, которая вызывает ошибку MySQL, должна работать. Это ошибка:

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

Понятия не имею, почему он пытается получить доступ к venues.show_id. Есть идеи?

1 Ответ

6 голосов
/ 02 мая 2009

У вас есть внешние ключи в обратном порядке. В соглашениях ActiveRecord класс с принадлежащим классом должен отображаться в таблицу базы данных с внешним ключом. См. ActiveRecord API : «Ассоциация own_to всегда используется в модели, имеющей внешний ключ». Это имеет некоторый смысл, если вы подумаете о том, каким образом метод own_to взаимодействует с has_one и has_many (поскольку вы, очевидно, не можете поместить внешние ключи в модель has_many).

...