Вы можете достичь этого множества способов. То, что я делал в прошлом, представляет собой комбинацию отображения \ скрытия ссылок в представлениях и проверки пользователя в контроллере. Я предположил, что у вас есть форма с подробными сведениями пользователя, которые вы отправите пользовательскому контроллеру.
Я включил контроллер из одного приложения, над которым работал ниже.
Первое, что я делаю, это проверить, проверен ли пользователь на аутентификацию (мы используем Google для этого, но если вы настроили программу, вам это не понадобится и, возможно, ваша собственная проверка подлинности). Devise создаст объект current_user, если вы вошли в систему, в который должен быть включен атрибут «role». В стандартном пользовательском создании вы можете проверить текущий user.role и просто перенаправить, если current_user.role не 1 (я предположил, что 1 означает admin).
class UsersController < ApplicationController
# Set the user record before each action
before_action :set_user, only: [:show, :edit, :update, :destroy]
# User must authenticate to use all actions in the users controller
before_filter :authenticate_user!
def create
if current_user.role = 1 then
@user = User.new(user_params)
@user.password = Devise.friendly_token[0,20]
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render action: 'show', status: :created, location: @user }
else
format.html { render action: 'new' }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
else
format.html { redirect_to @user, notice: 'You do not have sufficient rights to set up a new user.' }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_user
@user = User.find(params[:id])
rescue ActiveRecord::RecordNotFound
flash[:notice] = "User record does not exist"
redirect_to users_url
end
end
Я сам добавил параметры пользователя, и это сработало, я думал, что он наследует его от контроллера разработки, и я понял, что этот класс наследуется от класса контроллера приложения. в любом случае спасибо вам. но ваш ответ еще не завершен, response_to отсутствует конечный тег. отредактируйте его, чтобы отметить его как правильный ответ – Opapadaia