0

我有两个模型:ShowVenue. 表演有一个场地,每个场地都属于表演。此条件在两个模型文件中都使用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. 有任何想法吗?

4

1 回答 1

6

你有外键反转。在ActiveRecord 的约定中,带有belongs_to 的类应该映射到带有外键的数据库表。请参阅ActiveRecord API:“belongs_to 关联始终用于具有外键的模型中。” 这是有道理的,如果您考虑 belongs_to 与 has_one 和 has_many 交互的方式(因为您显然不能将外键放在 has_many 模型中)。

于 2009-05-02T00:26:38.777 回答