2011-08-28 11 views
9

Benzer yayınları zaten gördüm, ancak ihtiyacım olan cevapları tam olarak alamadım.devise ve STI kayıt sırasında Base sınıfı olarak nasıl oturum açılacağı

Kullanıcı modelim var ve bir kullanıcı türü olan STI bir Öğrenci modelini kullanıyorum.

Yeni bir Öğrenci oluşturduğumda, Devise o öğrenciye bir öğrenci oturumuyla giriş yapar. Sorun, uygulamamın geri kalanı bir user_session kullanıyor. SO, student_session kullanarak yeni bir user_session oluşturmalı mıyım? ve sonra öğrenciyi kapatır mı?

Veya Öğrenci oluşturulmasına izin vermek için Devise almanın bir yolu var mı, ancak Kullanıcı temel modeli olarak giriş yapılıyor mu? Eğer size yardımcı olur

Anthony

+3

Bunu hiç anladın mı? – Smickie

cevap

2

Kontrol dışarı Bu yayını, teşekkür ederiz ve bakın:

config/yolları:

Rails: Using Devise with single table inheritance

özeti aşağıdakileri yapmanız aslında. rb:

devise_for :users, :controllers => { :sessions => 'sessions' }, :skip => :registrations 
devise_for :students, :skip => :sessions 

app/kontrolörleri/sessions_controller.rb: Bunun için

class SessionsController < Devise::SessionsController 
    def create 
     rtn = super 
     sign_in(resource.type.underscore, resource.type.constantize.send(:find, resource.id)) unless resource.type.nil? 
     rtn 
    end 
end 
0

özel bir denetleyicisi oluşturmak zorunda. Sadece örnek bir uygulama

#POST create 
def create 
    student = Student.create(params[:student]) # normal crud with whatever your form params 
    sign_in(User.find(student.id)) # this actually signs in the user 
    # now redirect the student to the dash board/whatever page manually 
end 
İlgili konular