テーブル構成

Area

| id | name |

prefectures

| id | area_id | name |

prefecture_areas

| id | prefecture_id | name |

spots

| id | prefecture_id | prefecture_area_id | name |

buildを用いて、以下のようにデータを格納したいです。

areas(地方を管理するテーブル)

| id | name | 
| -- | ---- |
| 1  | 近畿 | 
| 2  | 九州 |  

prefectures(県を管理するテーブル)

| id | area_id | name | 
| -- | ------- | ---- |
| 1  | 1       | 兵庫 |
| 2  | 2       | 沖縄 |

prefecture_areas(県をさらに細分化する必要がある県のみ、県内のエリアを管理するテーブル)

| id | prefecture_id | name | 
| -- | ------------- | ---- |
| 1  | 1             | 南部 |

spots(観光地を管理するテーブル)

| id | prefecture_id | prefecture_area_id | name   | 
| -- | ------------- | ------------------ | ------ |
| 1  | 1             | 1                  | 姫路城   
| 1  | 2             | NULL               | 美ら海水族館

兵庫県は、prefecture_areasを作り、spotsを登録
沖縄県は、prefecture_areasを作らずに、spotsを登録

Modelの定義

    class Area < ActiveRecord::Base
      has_many :prefectures
    end

    class Prefecture < ActiveRecord::Base
      has_many :prefecture_areas
      has_many :spots

      belongs_to :area
    end

    class PrefectureArea < ActiveRecord::Base
      has_many :spots

      belongs_to :prefecture
    end

    class Spot < ActiveRecord::Base
      belongs_to :prefecture
      belongs_to :prefecture_area
    end

このModelの定義で、Area から Spot まで同時にbuildし、
spotsに姫路城を入れる際に、以下のようなコードを書きました。
(formは用いずに、保存します。)

Area.new(name: '近畿').prefectures.build(name: '兵庫').prefecture_areas.build(name: '南部').spots.build(name: '姫路城').save

すると、

INSERT INTO `spots` (`name`, `prefecture_area_id`, `created_at`, `updated_at`) VALUES ('姫路城', 1, '2016-10-23 09:36:13', '2016-10-23 09:36:13')

となり、prefecture_idをspotsに入れてくれません。
buildの段階で、spotsに、prefecture_idとprefecture_area_idを同時に入れることは不可能でしょうか?

長くなってしまいましたが、何卒よろしくお願いいたします。