2013-03-04 16 views
6

Yönetici ve kullanıcı modeli için Rails Admin ve Devise kullanıyorum. Kimliğini belirtmek için kullanıcı modeline bir "yönetici" sütunu ekledim. Config/routes.rb dosyasında, RailsAdmin: EngineBelirli yollar için Devise ve Raylar Yöneticisini kullanarak kimlik doğrulaması

için mount/admin eklentisi kullanıyorum sadece current_user.admin kullanıcılarının/admin'e erişmesine izin vermek istiyorum, aksi takdirde kullanıcıyı ana sayfaya yönlendirin.

Bunu en temiz kodda nasıl uygularım? Başvurunuz denetleyicisinde

class MyAdminController < ApplicationController 
    before_filter :authenticate_user! 
    before_filter :require_admin 
end 

: Yönetici denetleyicileri üzerinde

cevap

15

class ApplicationController < ActionController::Base 


    def require_admin 
    unless current_user && current_user.role == 'admin' 
     flash[:error] = "You are not an admin" 
     redirect_to root_path 
    end   
    end 
end 

Üzgünüm, bu raylar yönetici oldu fark etmedi, yapabileceğiniz:

# in config/initializer/rails_admin.rb 

RailsAdmin.config do |config| 
    config.authorize_with do |controller| 
    unless current_user.try(:admin?) 
     flash[:error] = "You are not an admin" 
     redirect_to root_path 
    end 
    end 
end 
+0

Çok teşekkür ederim. Fakat varsayılan Rails_admin motorunun üzerine nasıl yazabilirim? Alt sınıfta kullanabileceğim yönetici denetçisi yok. – bobzsj87

+0

Raylar için yönetici yanıtını güncelledim admin – rorra

+0

Harika! Çok teşekkür ederim! – bobzsj87

İlgili konular