Ich habe eine Rails 3 app mit Authentifizierung Setup mit Entwickeln Sie con el registerable
Modul aktiviert.
Ich möchte, dass neue Benutzer, die sich über unser externes Registrierungsformular anmelden, die vollständige Devise registerable
Modul, was jetzt geschieht.
Ich möchte aber auch die admin
Benutzer in der Lage sein, neue Benutzer direkt zu erstellen, unter Umgehung (denke ich) der Devise registerable
Modul.
-
Avec
registerable
deaktiviert ist, funktioniert mein Standard UsersController so, wie ich es mir für dieadmin
Benutzer, wie jedes andere Schienengerüst. Allerdings können sich neue Nutzer jetzt nicht mehr selbständig registrieren. -
Avec
registerable
aktiviert ist, wird mein Standard UsersController nie für die neue Benutzeraktion aufgerufen (AufrufDevise::RegistrationsController
stattdessen), und meine CRUD-Aktionen scheinen überhaupt nicht zu funktionieren (ich werde zurück auf meine Root-Seite ohne neuen Benutzer erstellt und keine Flash-Meldung). Hier ist das Protokoll von der Anforderung:Started POST "/users" for 127.0.0.1 at 2010-12-20 11:49:31 -0500 Processing by Devise::RegistrationsController#create as HTML Parameters: {"utf8"=>"", "authenticity_token"=>"18697r4syNNWHfMTkDCwcDYphjos+68rPFsaYKVjo8Y=", "user"=>{"email"=>"test@test.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "role"=>"manager"}, "commit"=>"Create User"} SQL (0.9ms) ... User Load (0.6ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 2) LIMIT 1 SQL (0.9ms) ... Redirected to http://test-app.local/ Completed 302 Found in 192ms
... aber ich bin in der Lage, neue Benutzer über das äußere Formular zu registrieren.
Wie kann ich erreichen, dass diese beiden Methoden zusammen funktionieren, so dass meine admin
Benutzer kann manuell neue Benutzer anlegen und können sich Gastnutzer selbständig registrieren?
Ich habe meine Benutzer-Controller-Setup für Standard-CRUD:
class UsersController < ApplicationController
load_and_authorize_resource
def index
@users = User.where("id NOT IN (?)", current_user.id) # don't display the current user in the users list; go to account management to edit current user details
end
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
flash[:notice] = "#{ @user.email } created."
redirect_to users_path
else
render :action => 'new'
end
end
def edit
end
def update
params[:user].delete(:password) if params[:user][:password].blank?
params[:user].delete(:password_confirmation) if params[:user][:password].blank? and params[:user][:password_confirmation].blank?
if @user.update_attributes(params[:user])
flash[:notice] = "Successfully updated User."
redirect_to users_path
else
render :action => 'edit'
end
end
def delete
end
def destroy
redirect_to users_path and return if params[:cancel]
if @user.destroy
flash[:notice] = "#{ @user.email } deleted."
redirect_to users_path
end
end
end
Und meine Routen sind wie folgt aufgebaut:
TestApp::Application.routes.draw do
devise_for :users
devise_scope :user do
get "/login", :to => "devise/sessions#new", :as => :new_user_session
get "/logout", :to => "devise/sessions#destroy", :as => :destroy_user_session
end
resources :users do
get :delete, :on => :member
end
authenticate :user do
root :to => "application#index"
end
root :to => "devise/session#new"
end