ここで私のモデルを見ることができます:
https://gist.github.com/768947
何が起こっているのかを説明するために、いくつかのモデルがあります。私のアプリの中核には、プロジェクト、ステージ、アップロード、コメント、ユーザーがあります。次に、ユーザー認証を管理するための役割と割り当てがあります。
これはプラグイン declarative_authorization とログイン用のデバイスで行っています。
最初の質問は、「ロール」の列をユーザー モデル/テーブルに追加し、そこに各ユーザーのロールを保存する方がよいのでしょうか? 複数のロールを持つユーザーがいる場合は、すべてのロールを配列として保存し、必要に応じて循環させることができます。
それとも、2 つの別々のテーブルと多数の結合を使用して割り当てをセットアップする、今セットアップしたようにする方がよいでしょうか? 私には、デザイナー、クライアント、管理者、スーパーユーザーの 4 つのロールしかありません。
コンピューティング リソースの観点からは、結合よりも列を使用して各クエリを実行する方が「安価」であるという意味で優れていますか、それともその違いはそれほど重要ではありませんか?
私の質問の根本は...現在、 current_user に割り当てられたプロジェクトを取得したい場合は、単純current_user.projects.each do |project|
にそのように循環させます。これは私が行った後です:@projects = current_user.projects
プロジェクトコントローラーで。ユーザーとロールを除く、他のすべてのモデルにも同じことが当てはまります。
ただし、「クライアント」ロールを持つユーザーを見つけたい場合は、非常に複雑になります。それとも私はそれを過度に複雑にしていますか?
どんな助けでも大歓迎です。