1

rails composer を使ってアプリを作成しました。認証にはdevise、ロール管理にはcancanを使用。したがって、デフォルトで、管理者、ユーザー、VIP の 3 つの役割があります。VIP は必要ないので削除しました。rake db:seed を実行して、デフォルトの管理者を作成します。次に、localhost にアクセスすると、「最初のユーザー」が管理者として表示されます。ログアウトして新規ユーザーを登録(サインアップ)します。次に、管理者として再度サインインします。デフォルトでは、この新しいユーザーには役割がありません。また、変更できることもわかりました(「役割の変更」-ボタン)。私はそれをプッシュし、管理者として、新しいユーザーが2番目の管理者になるか、単なるユーザーになるかを選択できます。たとえば、ユーザーを選択し、「ロールの変更」をプッシュすると、「UsersController の ArgumentError#update 間違った数の引数 (1 に対して 2)」が発生します。

2 つの質問があります。1. 管理者がエラーなしで役割を変更できるようにする方法。2.新規登録ユーザーのデフォルトロールを「ユーザー」にする方法。

ありがとう!

わかりました、私はこのようにデフォルトの役割を設定することができました:

 after_create :assign_reader_role
private
 def assign_reader_role
  self.add_role "user"
end

これが私のusercontrolleです:

class UsersController < ApplicationController
  before_filter :authenticate_user!


  def index
    authorize! :index, @user, :message => 'Not authorized as an administrator.'
    @users = User.all
  end

  def show
    @user = User.find(params[:id])
  end

  def update
    authorize! :update, @user, :message => 'Not authorized as an administrator.'
    user = User.find(params[:id])  
   if user.update_attributes(user_params)
     redirect_to users_path, :notice => "User updated."
   else
     redirect_to users_path, :alert => "Unable to update user."
   end
  end

  def destroy
    authorize! :destroy, @user, :message => 'Not authorized as an administrator.'
    user = User.find(params[:id])
   unless user == current_user
    user.destroy
    redirect_to users_path, :notice => "User deleted."
   else
    redirect_to users_path, :notice => "Can't delete yourself."
    end
   end
    private
    def user_params
      params.require(:user).permit(:name, :email)
    end
   end

ここにモデルがあります。User: class User < ActiveRecord::Base after_create :assign_reader_role rolify devise :database_authenticatable, :registerable,#:confirmable, :recoverable, :rememberable, :trackable, :validatable

  validates_presence_of :name

 private
 def assign_reader_role
    self.add_role "user"
  end
 end

役割:

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users, :join_table => :users_roles
 belongs_to :resource, :polymorphic => true

  scopify
end

UserController はもう入れました!そして、フォームからどこでパラメータを取得できますか?

4

1 に答える 1