我对公司实体的某个位置有一个 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' 以保持简单,结果相同
任何帮助表示赞赏。
:)