2012-11-06 24 views
6

Bir düzenleme kullanıcı modeli oluşturdum.Kullanıcı profili başına farklı kök yolu belirleme

  • müşteri
  • yönetici İki 'normal' modellerinin oluşturulması bij başardığım

: Müşteri ve yönetici kullanıcı 2 tipi vardır. Bu iki model şöyle, kullanıcı modelinden devralan:

class Customer < User 

bilen var mı nasıl kurulum kullanıcı türü başına bir kök yolunu can. Böyle bir şey istiyorum:

authenticated :customer do 
    root :to => "customer/dashboard#index" 
end 

authenticated :admin do 
    root :to => "admin/dashboard#index" 
end  

GÜNCELLEME:

root :to => "pages#home", :constraints => lambda { |request|!request.env['warden'].user} 
root :to => 'customer/dashboard#index', :constraints => lambda { |request| request.env['warden'].user.type == 'customer' } 
root :to => 'admin/dashboard#index', :constraints => lambda { |request| request.env['warden'].user.type == 'admin' } 
+0

Sorunuzun dışında ve bunun yerine bir cevap olarak güncellenen cevabı taşıyın. – Noz

+0

İlk 8 saat için kendi sorumu yanıtlayamıyorum ... –

cevap

2

Ne yapabileceğini tek kök yoluna sahip olduğu, home#index ve karşılık gelen söz: Ben sorunu hallettim

denetleyici eylemi, kullanıcı türüne bağlı olarak bir yönlendirme gerçekleştirir. Örneğin

: Eski bir soruya rağmen

def index 
    if signed_in? 
    if current_user.is_a_customer? 
     #redirect to customer root 
    elsif current_user.is_a_admin? 
     #redirect to admin root 
    end 
    end 
end 
+0

Cevabınız için teşekkür ederiz. Yaklaşımınızla ilgili 1 sorun: müşteri kökü ve yönetici kökü domain.com/ adresinde bulunmuyor. Bu durumda domain.com/customer ve domain.com/admin –

+0

gibi bir şey olacaktır, bu koşulları (is_a_customer? Ve is_a_admin?) Kök yönteminize taşımanız gerekir (her iki kullanıcı türü için dava açmanız için gereken ortak yöntem)) ve kullanıcı – Prem

5

, cevap yok olduğunu ve diğerleri için yararlı olabilir. raylar 3.2 olarak

(Ben alt şeyle denemedim hiç) o zaman daha da aşağı normal kök rotanın sizin routes.rb dosyası

authenticated :admin_user do 
    root :to => "admin_main#index" 
end 

yapabilirsiniz.

Bu, Invalid route name, already in use: 'root' (ArgumentError) verdiğinden (bu soruyla karşılaştığımda yeni bir çözüm bulduğum ve çözüm bulduğum için) raylarda 4 gibi görünmüyorsa, bunu yapmanın bir yolunu bulursam raylar 4'te ben cevabım

Edit güncellenecektir:

Tamam raylar 4 için düzeltme yarasa böylece belirgin sağ oldukça basittir ama o kadar. Böyle: yapmanız gereken tüm gibi bir ekleyerek ikinci kök güzergaha adlandırılmış rota yapmak olduğunu

authenticated :admin_user do 
    root :to => "admin_main#index", as: :admin_root 
end 

bu here belgelenmiş ama bu sadece geçici bir düzeltme gibi görünüyor unutmayın ve bu nedenle yeniden değişebilir

+0

imzalı olarak kayıtları getirme artık raylarda 5 çalışmıyor :( – wegginho

0

after_sign_in_path_for kullanımı uygun olmalıdır. Yani senin application_controller.rb bu ekleyin:

def after_sign_in_path_for(resource) 
    if resource.type == 'customer' 
    your_desired_customer_path 
    else 
    your_desired_admin_path 
    end 
end 
İlgili konular