ユーザーには多くのタスクがあります。(tasks.user_id = user_id)
タスクには多くのタグがあります ( Acts as taggable onによって実装されます)
ユーザーには多くのリストがあります -> 多くのタスクがあります (リストは複数のタグの単なるラッパーです。たとえば、{List id => 1, name => "shoppingvacation summer"} は、これらすべてのタグでタグ付けされたすべてのタスクを取得します)
たとえば、ユーザーが url tags/shopping%20vacation にアクセスした場合、私のコードは次の検索を行います。
Task.all.tagged_with(["shopping", "vacation"])
task.list_id の参照テーブルまたは外部キーはありません
ユーザーがタスク、リスト、およびタグを他のユーザーと共有できるようにしたい。
タスクを共有するユーザーは、そのタスクだけを別のユーザーと共有します。
リストを共有しているユーザーは、そのリスト内のすべてのタスクを別のユーザーに公開します。
タグを共有しているユーザーは、そのタグでタグ付けされたすべてのユーザー タスクを別のユーザーに開きます。
私には、いくつかのオプションがあり、それぞれの長所と短所について、私が考えていなかった可能性があることを教えてください.
1 つは、共有可能なアイテムごとに異なるテーブルです。
shared_tasks: task_id、shared_to_id (または user_id) shared_lists: list_id、shared_to_id shared_tags: tag_id、shared_to_id
OR: とのポリモーフィックな関連付け
共有可能: shared_id(item_to_share)、shared_to_id、shared_type
それぞれのプラスとマイナスは何ですか?
私が考えていない別の解決策はありますか?