gpt4 book ai didi

ruby-on-rails - 用于设计的自定义注册 Controller 不覆盖创建操作

转载 作者:行者123 更新时间:2023-12-04 06:12:26 25 4
gpt4 key购买 nike

我已经为此奋斗了好几天了。我创建了自己的注册 Controller 以允许 amdin 创建和删除用户。我已离开 :registerable我的设计配置中的模块,因为我还希望用户能够编辑他们的配置文件。我试过把那个模块拿出来看看它是否能解决我的问题。我遇到的问题是,当我以管理员身份创建新用户时,尽管有我自己的创建操作,它仍然会登录该用户。我已经尝试了我能想到的一切来超越这一点,但我被困住了。

我的注册 Controller :

  class RegistrationsController < Devise::RegistrationsController

load_and_authorize_resource

def new
super
end

def create
resource.build
if resource.save
redirect_to users_path
else
clean_up_passwords(resource)
render_with_scope :new
end
end

end

应用程序 Controller :=> 注意, after_sign_up_path_for在这里被覆盖作为测试,看看这是否可行
class ApplicationController < ActionController::Base

protect_from_forgery

rescue_from CanCan::AccessDenied do |exception|
flash[:error] = exception.message
redirect_to projects_url
end

protected

def stored_location_for(resource)
nil
end

def after_sign_in_path_for(resource)
projects_url
end

def after_sign_up_path_for(resource)
users_path
end

end

路线文件:
DeviseTest::Application.routes.draw do

devise_for :users, :controller => { :registrations => "registrations"}
devise_scope :user do
get '/login' => 'devise/sessions#new'
get '/logout' => 'devise/sessions#destroy'
end

resources :users, :controller => "users"

resources :projects

root :to => 'home#index'

end

我的用户 Controller 用于管理 View
class UsersController < ApplicationController

load_and_authorize_resource

# GET /users
# GET /users.xml
def index
@users = User.excludes( :id => current_user.id )

respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @users }
end
end

# DELETE /users/1
# DELETE /users/1.xml
def destroy
@user = User.find(params[:id])
@user.destroy

respond_to do |format|
format.html { redirect_to(users_url) }
format.xml { head :ok }
end
end
end

rake 路线输出:
new_user_session GET    /users/sign_in(.:format)       {:action=>"new", :controller=>"devise/sessions"}
user_session POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
user_password POST /users/password(.:format) {:action=>"create", :controller=>"devise/passwords"}
new_user_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"}
edit_user_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
PUT /users/password(.:format) {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel", :controller=>"devise/registrations"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}
new_user_registration GET /users/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"}
edit_user_registration GET /users/edit(.:format) {:action=>"edit", :controller=>"devise/registrations"}
PUT /users(.:format) {:action=>"update", :controller=>"devise/registrations"}
DELETE /users(.:format) {:action=>"destroy", :controller=>"devise/registrations"}
login GET /login(.:format) {:controller=>"devise/sessions", :action=>"new"}
logout GET /logout(.:format) {:controller=>"devise/sessions", :action=>"destroy"}
users GET /users(.:format) {:action=>"index", :controller=>"users"}
POST /users(.:format) {:action=>"create", :controller=>"users"}
new_user GET /users/new(.:format) {:action=>"new", :controller=>"users"}
edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
user GET /users/:id(.:format) {:action=>"show", :controller=>"users"}
PUT /users/:id(.:format) {:action=>"update", :controller=>"users"}
DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}
projects GET /projects(.:format) {:action=>"index", :controller=>"projects"}
POST /projects(.:format) {:action=>"create", :controller=>"projects"}
new_project GET /projects/new(.:format) {:action=>"new", :controller=>"projects"}
edit_project GET /projects/:id/edit(.:format) {:action=>"edit", :controller=>"projects"}
project GET /projects/:id(.:format) {:action=>"show", :controller=>"projects"}
PUT /projects/:id(.:format) {:action=>"update", :controller=>"projects"}
DELETE /projects/:id(.:format) {:action=>"destroy", :controller=>"projects"}
root /(.:format) {:controller=>"home", :action=>"index"}

其他一切都按预期工作,我只是无法让创建的用户不登录。创建一个用户不是一个大问题,但如果我需要创建 3 个或 4 个用户,则必须注销、登录、每一次。

非常感谢您对此的任何帮助。

最佳答案

在您的 routes.rb 文件的第三行,我认为您的意思是 :controllers => … ,而不是 :controller => … .你少了一个's'。

关于ruby-on-rails - 用于设计的自定义注册 Controller 不覆盖创建操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7624385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com