2015-05-15 6 views
12

Ich habe ActiveAdmin und Devise mit Benutzern arbeiten. Ich möchte mit Devise normale Benutzer ohne Administratorrechte mit demselben Benutzermodell anmelden. Wie kann ich das machen? (Ich will nur für Administratoren eine admin Fahne im User-Modell haben.) Habe ich versucht, die zweite Zeile hinzufügenWie verwende ich Devise und ActiveAdmin für das gleiche Benutzermodell?

devise_for :users, ActiveAdmin::Devise.config 
devise_for :users 

routes.rb Aber es gab einen Fehler, wenn ich versuchte, die Routen zur Liste

>rake routes 
DL is deprecated, please use Fiddle 
rake aborted! 
ArgumentError: Invalid route name, already in use: 'new_user_session' 
You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as explained here: 
http://guides.rubyonrails.org/routing.html#restricting-the-routes-created 

Ich habe einen Autorisierungsadapter erstellt, der nur user.admin == true überprüft und das funktioniert OK für ActiveAdmin. https://github.com/activeadmin/activeadmin/blob/master/docs/13-authorization-adapter.md

Antwort

16

Ich fand diese http://dan.doezema.com/2012/02/how-to-implement-a-single-user-model-with-rails-activeadmin-and-devise/

Aber ich am Ende tun dies

Devise 3.4.1
ActiveAdmin 1.0.0.pre1
Rails 4.2.1

routes.rb bis
devise_for :admin_users, {class_name: 'User'}.merge(ActiveAdmin::Devise.config) 
    ActiveAdmin.routes(self) 

    devise_for :users 
    resources :users 
application_controller.rb
def access_denied(exception) 
    redirect_to root_path, alert: exception.message 
    end 
config/initializers/active_admin.rb
config.authorization_adapter = ActiveAdminAdapter 
config.on_unauthorized_access = :access_denied 

(Und alle Methoden _user-admin_user zu verändern.)

app/models/active_admin_adapter.rb
class ActiveAdminAdapter < ActiveAdmin::AuthorizationAdapter 
    def authorized?(action, subject = nil) 
    user.admin == true 
    end 
end 

Und

rails generate migration add_admin_to_users admin:boolean 
+1

Ehrfürchtige Antwort. Wirklich sehr Hilfe voll. – SSR