Project、User、およびGroupモデルを使用してアプリに取り組んでいます。プロジェクトには多くのグループがあり、ユーザーはメンバーシップモデルを通じて多くのグループに属しています。2 つの選択肢があります。
プロジェクトが作成されると、デフォルト グループが作成されます。このプロジェクトに参加しているユーザーは、自動的にプロジェクトに追加されます。
ユーザーがプロジェクトのメンバー、およびプロジェクト内のグループになれるように、メンバーシップを多態的にします。
ファイル、ポスト、タスクなどの他のモデルが登場します。
オプション 2 を選択する場合、これらのモデルもポリモーフィックである必要があります。しかし、それは物事を少し単純化します。
オプション 2 を選択する場合、ポリモーフィズムは使用しませんが、状況は少し複雑になります。たとえば、ユーザーのプロジェクトを見つけるということは、ユーザーのグループを照会し、次にそれらのグループに関連付けられたプロジェクトを照会し、プロジェクトが一意であることを確認する必要があることを意味します。
誰かが同様の状況に直面したことがありますか、どちらのアプローチについてもアドバイスや追加の長所と短所はありますか?
私は本当にグループを完全に捨てたいと思っていますが、グループに基づいてコンテンツを分離することは、アクセス許可の要件です。