会社エンティティの場所に 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」を試して、物事をシンプルに保ちましたが、同じ結果になりました
どんな助けでも大歓迎です。
:)