2014-10-19 14 views
14

Ruby 2.0.2, Rails 4.0.3, Sihirbaz 0.8.5Rails'te bir yönlendirmenin veya oluşturmanın önceden verilmiş olup olmadığını kontrol etmek mümkün mü?

Kodumda bir yönlendirme yayınlamaya çalıştım, yalnızca bir yönlendirme veya oluşturma işleminin zaten yapılmış olduğu hata iletisini aldım. Bu durumda, geri dönmek için mutluyum. Ancak, yöntem başka herhangi bir nedenle çağrılırsa, bir yönlendirme veya işlemin yayınlanıp yayınlanmadığını kontrol etmeyi isterim. Kod, Sorcery'e dayanan kimlik doğrulamasıdır. Uygulama kontrolörü olarak

, ben:

def not_authenticated 
    redirect_to login_url # , :alert => "First log in to view this page." 
    end 

Bu örnein kontrol biter, şöyle:

kurtarmada
def current_user 
    @current_user ||= @view.current_user unless @view.blank? 
    begin 
     @current_user ||= Associate.find(session[:user_id]) unless session[:user_id].blank? 
    rescue ActiveRecord::RecordNotFound => e 
     return 
    end 
    current_user = @current_user 
    end 

, ben olsun veya olmasın bir tespit istiyorum yönlendirme veya oluşturma zaten gerçekleşmişti, böylece eğer olmasa da login_url için redirect_. Bu, elbette ki, bunun farklı bir yöntemden çağrıldığı anlamına gelir. Teşekkürler. render veya redirect_to zaten denilen edilmişse

+0

Giriş sayfanızda "current_user" var mı? Öyleyse neden? – Substantial

+0

@Substantial Hayır, öyle değil. İz, burada yer alandan başka herhangi bir kodumu göstermedi. Büyücülük current_user'yi kontrol ediyordu. Bu geçici bir durum ve izleri kaydetmedim, bundan daha fazla şeyim yok. –

cevap

29

Sen kontrol etmek için kontrolörün içinde performed? çağırabilirsiniz:

performed?    # => false 
redirect_to(login_path) 
performed?    # => true 

Raylar docs performed? hakkında daha fazlasını okuyun.

+0

Vay harika! Tam istediğim bu! –

İlgili konular