私はRails 5.0.0.1とカスタム認証/認可システム(Devise/CanCanに似ています)を使用しています。Rails、Models、 "Projects"スコープ
私はRailsアプリケーションに取り組んでおり、ユーザーが「グループ」または「プロジェクト」の一部であるかどうかに基づいてデータを表示/非表示する方法についていくつかのアドバイスを探しています。
アプリ:基本的に、ユーザーはテキスト記事の行をハイライト表示できます。それらは、最初に記事の内容(すなわち、その行のインデックス)のビューを提示される。彼らはハイライトする行を選択できます。行がハイライト表示されている場合、その行をクリックすると、その行のコメントセクションが表示されます。
Article has_many Lines
Line has_many Highlights
Highlight has_many Comments
User has_many Highlights
User has_many Comments
Highlight belongs_to User
Comments belongs_to Highlight
Comments belongs_to User
ここで「グループプロジェクト」機能を追加したいと思います。ユーザーがグループプロジェクトで使用する記事を選択します。他のユーザーをこのプロジェクトに招待します。招待されたユーザーはハイライトとコメントを付けることができますが、すべてのハイライトとコメントはそのプロジェクトのユーザーにのみ表示されます。
私の考えは、「スコープ」を作成することでした。デフォルトでは、すべての記事、ハイライト、およびコメントのスコープは 'public'です。どのユーザーもログインして、その記事、ハイライト、コメントを表示できます。しかし、ユーザーはグループプロジェクトの1つにアクセスし、「私的」スコープのハイライト、コメントなどを含む(おそらく同じ)記事を見ることもできます。これにより、1つのラインに複数のハイライトと異なるスコープのコメントを付けることができます。記事のラインのハイライト/コメントには、1つのパブリックバージョンと複数のプライベートバージョンがあります。
私の質問は、これらの複数のインスタンスを効率的に処理する方法です。プロジェクトごとにラインの新しいインスタンスを作成する必要がありますか?これはデータベースの不要な複製のようです。私はいくつかの条件をコントローラやモデルに入れてproject_idやそれに類するものに基づいてスコープに入れたいのですか?
「ユーザーグループ」を扱うための宝石が複数あることは知っていますが、通常は承認に使用されます。私は、ユーザーがそれぞれ独自の招待状とハイライトとコメントを持つ任意の数のプロジェクトを作成できるようにしたいと考えています。
工夫のようなものに
Comment
モデルを更新認証フレームワークではありません。認証フレームワークであり、2つを混同しないでください。現在のユーザーに基づいてリソースの承認をしたいと思うように私に聞こえます。CanCanCanはこれを提供しています。あなたの認証システムと連携して動作します。 – David良い点。私は認証システムも持っています。私が望むのは、現在のユーザーだけではなく、ユーザーが属するプロジェクトに基づいた承認です。つまり、ユーザーがプロジェクトを見ている場合は、そのプロジェクトに関連する記事のハイライトとコメントをすべて表示します。 – RSH