2017-09-21 19 views
0

特定のダッシュボードに表示されるデータセットを決定する一部のモデル間で、has_many :throughの関連付けがあります。has_many throughのチェックボックス、追加の結合テーブル属性を持つ

class Dashboard < ActiveRecord::Base 
    has_many :dashboard_datasets 
    has_many :datasets, :through => :dashboard_datasets 
end 

class DashboardDataaset < ActiveRecord::Base 
    belongs_to :dashboard 
    belongs_to :dataset 
end 

class Dataset < ActiveRecord::Base 
    has_many :dashboard_datasets 
    has_many :dashboards, :through => :dashboard_datasets 
end 

新しいDashboardを作成するためのフォームは、あなたが、私はそのダッシュボードに表示したい既存のデータセットを選択できるようにするdataset_ids[]という名前のチェックボックスのシンプルなセットを持っています。

class DashboardForm < Reform::Form 
    model: :dashboard 

    property :name 
    property :description 
    collection :dataset_ids 
end 

これまでのところ、とても簡単... ​​

私は今、しかし、のために使用すべきである「レイアウト」を決定するために、結合テーブルに追加の関連付けを追加するために探していますそのダッシュボード上のそのデータセット。グリッド、テーブル、リスト。など

class Layout < ActiveRecord::Base 
    has_many :dashboard_datasets 
end 

class DashboardDataaset < ActiveRecord::Base 
    belongs_to :dashboard 
    belongs_to :dataset 
    belongs_to :layout 
end 

チェックボックスに加えて、選択された各データセットのチェックボックスのために、私はこの与えられた上で、使用するレイアウトを選択するための選択ボックスがあるように私は今、私のダッシュボードの形を適合させたいです協会。

どこから始めますか?フォームオブジェクトのcollectionをより豊かにして、より多くの情報を追加しますか?

大変ありがとうございます。情報の

答えて

0

Found a good example here

0k32によるキー部分は、以下のとおりです。

  • 標準にhas_manyの関連付けを設定し、工場 - > factory_color - >カラー
  • 使用accepts_nested_attributes_for factory_color
  • の作成それぞれのチェックボックスのモデルを使用して、一時的なモデルリストを作成します。 (factory.all_colors)
  • アソシエーションを渡すことができるfields_for機能を使用し、モデルの個別のリストなどを使用します。 fields_for:factory_colors、@ factory.all_colors do | fc | ...
  • 未チェックの項目に_destroy属性を設定するために、コントローラーの前にフィルターを追加します。
関連する問題