2016-04-07 23 views
0
class RegistrationsController < Devise::RegistrationsController 

    def create 
    super 
    if resource.save 
     if request.fullpath == '/techie/signup' 
     resource.role = :techie 
     resource.save 
     end 
    end 
    end 

end 

Bu icat denetleyicisini geçersiz kıldım ve '/ techie/signup /' yoluna sahip ayrı bir kayıt görünümüm var ve kullanıcıya göre bir rol eklemek istiyorum giriş yaptıkları sayfa. Rolü gizli bir alana koymak istemiyorum, çünkü bu şeyler sömürülebilir.Burada neyi yanlış yapıyorum? Hesap oluşturma ve ekleme ekleme

Teşekkürler

+0

Verilerin ne kadar uzak olduğunu görmek için kodunuzda bir kesme noktası koymayı denediniz mi? – SomeSchmo

cevap

1

Bunu deneyin.

URI(request.referer).path 

kullanarak yerine request.full_path veya request.path_info kullanmanın

def create 
    super do |res| 
     if request.path_info == '/techie/signup' 
     res.role = :techie 
     res.save! 
     end 
    end 
    end 
+0

undefined yöntemi alma "fullpath" tahmininde yardımcıların modele dahil edilmesi gerekir, ancak MVC'yi bozmaz mı? –

+0

@SaraAl benimkini test etmeme izin ver, 'res' nesnesinin fullpath sağladığından emin değilim. – 7urkm3n

+0

Teşekkürler! gerçekten gizli bir alana dayanan rolü düzenleyen ve güvenlik için en iyi olduğunu düşünmüyorum, sadece URL yolunu –

1

, onu çözdüm.

+1

nice, ama bu URI (request.referer) .path' tam olarak ne döndürüyor? – 7urkm3n

+0

@ 7urkm3n, kayıt denetleyicisinin oluşturma yönteminde '/ techie/signup' değerini döndürür. Kaydın yaratma eylemiyle korelasyona girmeyecek olan mevcut yolu kapmak aslında '/ techie/signup' şu anki yoldur. Önceki yoldu ve request.referer son sayfayı kaptı. –