2

ユーザーを処理するためにdevise-cancan-rolifyセットアップを使用しています。サインアップすると、読者の役割を受け取ります。管理インターフェイスから、ライターの役割に昇格できるようにしたいと考えています。問題は、特に users_roles モデルがなく、私がかなりアマチュアであるため、ロールと users_roles テーブルのセットアップ方法がこれをかなり複雑にすることです。ここで私を正しい道に導くことができる、これに精通している人はいますか?

4

1 に答える 1

18

devise + cancan + rolify のセットアップに関するこのチュートリアルをご覧になったことを願っています。

これらの手順に従った場合、users、roles、および users_roles テーブルが必要です。users_roles モデルは必要ありません。

最初に行う必要があるのは、ユーザーの役割を割り当てて確認できることを確認することです。

続行する前にこれらのコードを実行できるはずです (ドキュメントの使用部分から、任意のユーザーでコンソールでこれらを試してください)。

user.add_role "admin"
user.has_role? :admin

これが機能している場合は、新しいユーザーにリーダーの役割を割り当てる必要があります。これを行うのに最適な場所は、after_create コールバックです。

class User
  after_create :assign_reader_role
private
  def assign_reader_role
    self.add_role "reader"
  end
end

次のステップは、アドミン インターフェースからライター ロールの追加/削除を作成することです。

UsersController に 2 つのアクションを追加するだけです。

def assign_writer_role
  @user = User.find(params[:id])
  @user.add_role "writer"
  redirect_to @user
end

def remove_writer_role
  @user = User.find(params[:id])
  @user.remove_role "writer"
  redirect_to @user
end

それで全部です。

これが役立つことを願っています。

于 2012-08-13T18:00:32.537 に答える