0

Rails 3.0.9 を使用しています

私のプロジェクトは、単一のグループの人々のために作成されました。今、私は自分のプロジェクトを強化して、複数のグループがアクセスできるようにしたいと考えています。私のデータベースでは、ユーザー テーブルとアクティビティ テーブルの両方に新しい列を追加します。スキーマの変更: テーブル: ユーザー ID、名前、group_id # 新規追加

テーブル: 活動 id, activity_name, group_id # 新規追加

現在、users.group_id が 1 の場合、アクティビティ ページで、ユーザーは activities.group_id = 1 のデータのみを表示できます。

そこには膨大な量のコードとロジックがあるため、コントロールとビューを変更したくありません。このデータ フィルターは、他のテーブルでも発生しました。current_user.activities.find(:all) を使用する方法があることは知っていますが、プロジェクトのほぼすべてのコードに影響します。

多くのコードを変更せずに、特定のユーザーでデータ フィルターを構成する方法はありますか?

前もって感謝します!

4

1 に答える 1

0

テナントジェムをチェックしてください。 https://github.com/yoolk/tenancy

Group.current = group を設定すると、オブジェクトが scoped_to group であるすべてのクエリに where group_id = Group.current.id が追加されます。

それはかなりきれいで、各モデルに最大 3 行のコードを追加します。私の application_controller は、Devise ログイン後に Group.current を設定します。(さらに ~3 行のコード)

于 2014-04-01T14:32:55.650 に答える