用戶有許多任務。 (tasks.user_id = USER_ID)數據庫模式 - 多態關聯與單獨表格
任務有許多標籤(通過Acts as taggable on
用戶實現有許多列表 - >其中有許多任務(A名單只是多個標籤的包裝,例如{列表ID = > 1,name =>「shopping vacation summer」}將檢索標記爲所有這些標籤的所有任務)
例如,如果用戶轉到url tags/shopping%20vacation,我的代碼會執行查找用於:
Task.all.tagged_with(["shopping", "vacation"])
沒有查找t能夠或外鍵爲task.list_id
我希望用戶能夠與其他用戶共享任務,列表和標籤。
共享任務的用戶與其他用戶共享該任務。
共享列表的用戶將該列表中的所有任務打開到另一個用戶。
共享標籤的用戶將標記有該標籤的所有用戶任務打開給其他用戶。
對我來說,有幾個選擇,我想就我可能沒有想過的每個選項的優缺點提供一些意見。
一個是針對每個共享項目的獨特表:
shared_tasks:TASK_ID,shared_to_id(或USER_ID) shared_lists:LIST_ID,shared_to_id shared_tags:TAG_ID,shared_to_id
OR:與
一個多態關聯shareables:shared_id(item_to_share),shared_to_id,shared_type
各有什麼優缺點?
有沒有另外的解決方案,我沒有想到?
這實際上是一個好主意 - 最初我在每個Task.owner_id上都有一個專欄,但這是一個很好的選擇。正如你所說,它也大大簡化了事情,因爲所有任務都將通過連接表來檢索。謝謝回覆。 – Squadrons 2013-03-28 19:55:37