【发布时间】:2013-11-04 05:04:10
【问题描述】:
我在公司实体的某个位置有一个 has_one 关联:
class Location < ActiveRecord::Base
attr_accessible :city, :country, :postal_code, :state
end
class Company < ActiveRecord::Base
has_one :headquarters, :class_name => "Location"
end
公司实体的基础架构包含 location_id 属性。我希望我应该能够像这样访问公司的总部位置信息:
Company.find(12345).headquarters
但是,这会导致异常:
SELECT "locations".* FROM "locations" WHERE "locations"."company_id" = 12345 LIMIT 1
ActiveRecord::StatementInvalid: PGError: ERROR: column locations.company_id does not exist
我很困惑为什么会这样。我希望 FK 在公司中,而不是位置(即 SELECT * FROM location WHERE locations.id = 12345)。我以同样的方式定义了其他查找,它们的行为符合我的预期。
需要注意的几点:
- 位置不属于公司,许多实体类型可以有一个 位置
- 我已经尝试在我的关联定义中更加详细/不那么冗长, 好像没什么区别
- 我也曾一度尝试使用 'has_one :location' 来保持简单, 结果相同
感谢任何帮助。
:)
【问题讨论】:
标签: ruby-on-rails activerecord associations has-one