0

多くのユーザーと1人の管理者がいます。ユーザーはグループを作成し、それらのグループに参加するための要求を送受信できます。そのシステムは正常に動作します。私は現在、管理者が作成する別々の「スーパーグループ」を構築しています。これらの「スーパーグループ」は依頼に依存せず、任命に頼っています。管理者はユーザーを選択し、グループを選択し、選択したユーザーを選択したグループに追加します。これをどのように達成するのですか?管理的にユーザーをグループにまとめる

  • 管理者が(プロファイルページで)ユーザーを選択したり、グループを選択したり(できればドロップダウンから)、関連付けることができるように設定するにはどうすればよいですか?

たとえば、管理者として、ユーザーのプロフィールページに移動したいと思います。プロフィールページにドロップダウン(管理者のみアクセス可能)があり、選択したグループにユーザーを追加します。どうすればこれを達成できますか?フォームの一種を通して?ブール値のフィールド?私はちょうど私の結合モデルの作成アクションに追加メソッド(< <)を追加して、グループ用の選択タグと作成送信ボタンを持つことができますか?私は一般的な方向を指摘する必要があり、私は管理できると思う。

注:私はhas_many:throughを使用して関係を取得しています。管理者には多くの「スーパーグループ」が作成されています。 「スーパーグループ」には多くのメンバー(ユーザー)がいます。私はユーザーを管理上グループに入れる方法を知る必要があります。

+0

これらの分割数はいくつですか?あなたは 'SuperGroup'モデルと' Group'モデルを持っていますか、 'SuperGroup'は' Group'の単なる型ですか?これらのモデルを関連付けに含めることができれば、それはあなたに解決策を提案するのに役立ちます。 – JackCollins

+0

グループとスーパーグループは別々の2つのモデルです。 –

+0

私は実際にhas_manyにユーザーを追加するためのベストプラクティスを知る必要があります:ドロップダウンによる関連付け。 –

答えて

1

UPDATE - has_manyにユーザーを追加するためのベストプラクティスは:ドロップダウンによる関連付けですか?

あなたは、ユーザーのプロフィールページからスーパーグループにユーザーを追加したいと考えています。これは、super_group_idをRailsコントローラに渡し、そのスーパーグループを見つけてそのグループにユーザを追加することを意味します。

これは、1つの選択肢である:

@user = User.find(params[:id]) # or user_id, depending on the controller 
@super_group = SuperGroup.find(params[:super_group_id]) 
@super_group.users << @user 

オリジナル回答:

どのようにあなたは、現在のスーパーグループを作成および削除されますか?あなたはSuperGroupsControllerと思っています。これを達成する1つの方法は、同じRESTfulアクション(createupdateなど)を持つサブコントローラSuperGroups::UsersControllerを持つことです。これらの安らかなアクションは、ユーザーをグループに割り当てたり削除したりするのを処理します。これにより、管理者だけがこれらのアクションを実行していることを確認するために必要なチェックを分けることができます。

class SuperGroups::UsersController < ApplicationController 
    before_action :verify_admin # create this method to do the checking 

    def create 
    # create a user super group association here 
    end 

    def delete 
    # remove a user from the super group here 
    end 
end 

これは明らかにDHHによるベストプラクティスです。私はまずthis articleを読んだ後、この方法を使いました。このパターンは非常にきれいで便利でした。

+0

スーパーグループのメンバーシップを作成して削除するスーパーグループアソシエーションコントローラがあります。私は基本的に、あなたが説明したものを持っています。私が迷っているのは、ユーザーを選択して関連付けに加える方法です。たとえば、管理者として、ユーザーのプロフィールページに移動したいと思います。プロフィールページにドロップダウン(管理者のみアクセス可能)があり、自分のグループにユーザーを追加します。どうすればこれを達成できますか?フォームの一種を通して?ブール値のフィールド? –

+0

今後のために質問を更新します。 –

+0

ユーザーは1つの 'SuperGroup'にしか属していないのですか、それともそれらは多くの異なる' SuperGroup'に属していますか? – JackCollins

関連する問題