前提・実現したいこと

Rails5にてシステムをつくっています。

画像の説明をここに入力
参照元https://tenshoku.mynavi.jp/

このような階層的なcheckboxを実装したいと考えているのですが、
・どのようなDB構造なのか?
・view側でどのように実装し、parameterを送り、保存処理を行えば良いか?
と、システム構築の検討がつきません。

試したこと

普段、複数のckeckboxの実装は、collection_check_boxesメソッドを利用しています。
また、複数のモデルへの保存処理は、fields_for + nested attributes を利用して実装した経験があります。

[参考]Railsでaccepts_nested_attributes_forを使ってNested Modelを新規作成するときの注意
[参考]Railsでaccepts_nested_attributes_forとfields_forを使ってhas_many関連の子レコードを作成/更新するフォームを作成

しかし、階層化+複数のcheckboxとなると、手が止まってしまいました。
過去に実装経験がある方、または実装イメージがつく方、ご教授して頂きたいですm(_ _)m

要件

上記のgif画像を元に、実行環境の例とCSVを作成しました。
下記の要件でなくても結構です。必要な場合に参考にして頂けたら幸いです。

テーブル

usersテーブル
|Column|Type|Options|
|:----:|:--:|:-----:|
|id|string|null: false|
|name|string|

** [マスタデータ]**
occupationsテーブル
|Column|Type|Options|
|:----:|:--:|:-----:|
|id|string|null: false|
|name|string|

deparmentsテーブル
|Column|Type|Options|
|:----:|:--:|:-----:|
|id|string|null: false|
|name|string|

rolesテーブル
|Column|Type|Options|
|:----:|:--:|:-----:|
|id|string|null: false|
|name|string|

CSV形式

*所々上記gifから項目名称を変更しています。

occupationsテーブル
name
全営業

departmetsテーブル
name, occupation_id
営業・代理店など,1
人材コーディネータ,1
コールセンターやカスタマーサポート,1

rolesテーブル
name, department_id
営業・企画営業 法人,1
営業・企画営業 個人,1
営業マネジャー・代理店営業,1
人生カウンセラー,2
専門コーディネータ,2
コールセンタ,3
オペレーション,3

実行環境

Ruby 2.3.1
Rails 5.0.5
mysql Server version: 5.6.34