2

Railsにチェックリストを保存するための最良の方法を決定するのは苦労しています。チェックリストをレールに格納するためのモデル設定

私のアプリケーションでは、多くのドキュメントを持つアカウントがあります。チェックリスト項目をアカウントで設定できるように、各文書にチェックリストを追加したいと思います。 すべての文書に同じチェックリスト(勘定別に設定されています)がありますが、各項目のチェック/チェックされていない値が異なる場合があります。

Account 
    Document1 
    ChecklistForDocument1 
     ChecklistItem1 - isCheckedForDocument1 
     ChecklistItem2 - isCheckedForDocument1 
     ChecklistItem3 - isCheckedForDocument1 

    Document2 
    ChecklistForDocument2 
     ChecklistItem1 - isCheckedForDocument2 
     ChecklistItem2 - isCheckedForDocument2 
     ChecklistItem3 - isCheckedForDocument2 

がどれだけ私ができるセットアップチェックリストのこれらのタイプを格納するためのモデル/移行不思議:

セットアップは、次のようになります。

私はDatabase Design for Storing Checklists and ResultsWhat would be a good approach for storing the results of a checklist in Rails?のようないくつかの他の質問を見てきましたが、それぞれ私の状況と少し異なり、本当に私を怒らせています。

答えて

2

、これを行うDOCUMENT_IDが含まれている結合テーブルを作成し、次にあなたがする必要があるすべてはあなたのコード内でdocument.check_list_itemsを参照され、その後、あなたの既存のモデル

Document 
    has_many :document_check_list_items 
    has_many :check_list_items, :through => :document_check_list_items 


CheckListItem 
    has_many :document_check_list_items 
    has_many :documents, :through => :document_check_list_items 

を変更

DocumentCheckListItem 
    belongs_to :document 
    belongs_to :check_list_item 

をcheck_list_item_id 。文書上の

設定check_list_itemsは関係をセットアップ値を設定し、ワイヤーであろう。この方法

document.check_list_item_ids = [1,2,3,4,5] 

にIDの配列を送信することによって行われます。

+0

DocumentCheckListItem関係にはis_checkedプロパティがあり、CheckListItemにはitem_nameプロパティがありますか? CheckListItemsがどのアカウントで所有されているドキュメントで使用できるかをアカウントで設定する方法を教えてください。 – Jaysbays

+1

関係の存在は "is_checked"を表します。関係がフォームでチェックされていなければ、関係は破壊されるでしょう。名前列はCheckListItemオブジェクトにあり、再利用されます。 – Swards

+0

さて、感謝します、ありがとう。そして、どのCheckListItemがアカウントモデルを介して利用可能であるかを制御する方法はありますか? – Jaysbays

関連する問題