Ton*_*ony 0 ruby activerecord ruby-on-rails relational-database has-one
我有两个型号:Show和Venue.Show有一个场地,而每个场地都属于show.这两个条件在带有has_one&belongs_tostatements的模型文件中定义.但是,我无法通过这样做进入会场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("*********************")
Run Code Online (Sandbox Code Playgroud)
我觉得导致MySQL错误的行应该有效.这是错误:
ActiveRecord::StatementInvalid (Mysql::Error: Unknown column 'venues.show_id' in 'where clause': SELECT * FROM `venues` WHERE (`venues`.show_id = 95) LIMIT 1)
Run Code Online (Sandbox Code Playgroud)
我不知道它为什么试图访问venues.show_id.有任何想法吗?
你有外键反转.在ActiveRecord的约定中,具有belongs_to的类应该使用外键映射到数据库表.请参阅ActiveRecord API:"belongs_to关联始终在具有外键的模型中使用." 如果您考虑belongs_to与has_one和has_many交互的方式(因为您显然无法将外键放在has_many模型中),这是有道理的.
| 归档时间: |
|
| 查看次数: |
809 次 |
| 最近记录: |