Railsで階層構造(親子関係)のある複数選択可能なckeckboxを作成したい
前提・実現したいこと
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