2016-09-17 5 views
3

私は、プライベートギャラリーを作成し、ユーザーをさまざまな権限(ビューアとエディタ)でギャラリーに招待するRailsフォトギャラリーアプリを構築しています。アソシエーションタイプのフィールドを持つActiveRecordの多対多テーブル - Rails

私はgalleries_usersテーブルは、多対多relationsip解決することが要求されることを考えています:

user_id | gallery_id 
-------------------- 
1  | 4 
-------------------- 
2  | 4 

をしかし、私は協会の許可の種類を保存する必要がありますか?

user_id | gallery_id | permission 
--------------------------------- 
1  | 4   | edit 
--------------------------------- 
2  | 4   | view 

は、これは正しい軌道に乗っている:私はちょうどpermissionフィールドを追加することはできますか?

私はRolify gemも見たことがありますが、それはギャラリーにユーザーを追加すること(上記の方法で)とRolifyのインターフェイスを介して別々に役割を追加することを意味します。方法がない限り、ユーザーをギャラリーに追加し、その役割を関連付けとして扱う最初のステップをスキップできますか?

答えて

0

多対多の関係を使用する代わりに、1対多の関係を試すことができます。所有者とギャラリーの関係を別々に保つことを意味していると言いました。ギャラリーの所有者を招待されたユーザーと混在させないでください。将来の実装で問題が発生する可能性があり、別のテーブルにinvited_usersを維持しようとします。

1)オーナーのギャラリー - > 1表1

多くの関係:ユーザー

表2:

表3:invited_users

あなたのギャラリー

2)ユーザーを招待しましたgallery_id、view_permission_user_ids_arr、edit_permission_user_ids_arrなどの列を持つこのテーブルを作成できます。

各ギャラリーには、表示/編集権限を持つユーザーIDの配列を簡単に使用できます。

お手伝いします。

+0

ご回答ありがとうございます。申し訳ありませんが、ギャラリーのオーナーがいないということを忘れてしまいました。ギャラリーを作成するユーザーには、自動的にエディタ権限が割り当てられます。これは、招待されたユーザーとクリエイターのミキシングが問題ではないことを意味します。 – slehmann36

+0

@ slehmann36..この場合、多対多の関係を持つ方がより良いアプローチと思われます。許可フィールドについては、そのような区別が必要であると思うので、権限フィールドを持っている必要があります。また、edit_permission、view_permissionなどの2つのフィールドを考えると、dbのクエリに役立ちます。 –

関連する問題