registerable
modülünün etkinleştirilmesiyle Devise kullanarak kimlik doğrulama ayarlı bir Rails 3 uygulaması var.Raylar: (Devise) Yeni kullanıcılar için iki farklı yöntem?
Şu anda olan tüm Devise registerable
modülünü kullanmak için dış kayıt formumuzu kullanarak kaydolan yeni kullanıcılara sahip olmak istiyorum. Bununla birlikte, admin
kullanıcısının yeni kullanıcılar oluşturmasını (Bence) Devise'nin registerable
modülünü atlamasını da istiyorum. Ben admin
kullanıcı için bunu istediğiniz gibi engelli registerable
ile
, benim standart UsersController tıpkı diğer Raylı iskele gibi çalışır. Ancak, şimdi yeni kullanıcılar kendi başlarına kayıt olamaz.
registerable
ilebenim standart UsersController yeni kullanıcı eylemi (yerine
Devise::RegistrationsController
çağırarak) çağrısında hiçbir zaman, etkin ve benim CRUD eylemleri hiçbir yeni ile benim kök sayfaya geri boylayacak (bütün çalışmak görünmüyor kullanıcı oluşturuldu ve flaş mesajı yok). İşte isteğinden günlüğü var: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"=>"[email protected]", "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
... ama dışarıda formu ile yeni kullanıcılar kayıt mümkün.
nasıl admin
kullanıcı el kendi başlarına kayıt olabilirsiniz yeni kullanıcılar ve konuk kullanıcıların oluşturabileceği şekilde, bu yöntemlerin her ikisi de birlikte çalışmak için alabilirim? aşağıdaki gibi
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
Ve yolları Ayarı:
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
Duh! Aradığım gizli sosdu. Çok fazla problem çözüyor ... kafamı bir duvara yasladığımda özür dilerim. Teşekkürler. – neezer
Denetleyicide ad alanı nasıl verilir? –
Raylarda ad alanlarının nasıl kullanılacağı hakkında biraz daha ayrıntılı bilgi.Sen uygulaması> denetleyicileri bir klasör oluşturmanız gerekir - bu örnekte size kontrolörleri klasöründe yeni bir klasör yönetici koyun ve sonra orada yeni kullanıcılar denetleyicisi koyardı. http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing - dosyaları daha sonra applcom/admin/kullanıcıların sorgulanabilmelidir –