2016-04-14 11 views
0

Projede çalışıyorum. İki modelim var: Biri rolleri olan Kullanıcı (Devise) ve Diğer ise Satıcıdır. Tüm uygulama Kullanıcılar bu rollerle ilişkili kullanıcı tablosunda saklanır. Satıcı Bölümü için . Bir problemim var. Satıcı Kaydı İsteğini kabul ediyorum. Dolayısıyla, bir satıcı isteği başvurusu göndermek için kullanıcı yalnızca e-posta adreslerini sağlayacaktır ve uygulama e-posta adresinin kayıtlı olup olmadığını görmek için Kullanıcılar tablosunu kontrol edecektir. Kayıt edilmişse, "e-posta adresi zaten kullanılıyor ve bir kullanıcıya kaydolmayı öneriyor" gibi bir mesaj gönderecek, aksi halde e-posta adresini oturumda (veya başka bir şekilde) saklayacak veya bir satıcı istek formu oluşturacaktır. Kullanıcı uygulamayı ve uygulamayı gönderecektir. E-posta adresiyle birlikte tüm giriş alanları satıcılar tablosunda saklanır.Rails bir kullanıcı bul ve form oluştur

Denedim ama yapamadım. Öyleyse lütfen bu görevi nasıl yapacağımı öner.

def create 
    if params[:email] == User.find_by_email(params[:email]) 
     flash[:notice] = "Email address already in use!" 
     redirect_to new_merchant_path 
    else 
     render 'form' 
    end 
end 
+0

StackOverflow'a Hoş Geldiniz. Denediğin kontrolör kodunu gönderir misin? Gönderinizdeki kodla kaliteli yanıtlar almanız daha olasıdır. – trh

+0

Teşekkürler @trh, soruyu kontrolör koduyla güncelledim. –

cevap

0

Görünüşe göre yakınsınız. veritabanında bulunan ve nil değilken

def create 
    if User.find_by_email(params[:email]) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 

sizin için çalışacaktır eğer

beri
User.find_by_email(params[:email]) 

kullanıcı nesnesini döndürür. Sugested olarak, kullanıcıyı görüşünüze göstermeniz gerekiyorsa, sonucu bir örnek değişkenine kaydetmelisiniz.

def create 
    if @user = User.find_by_email(params[:email]) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 
+0

Çalışmıyor, her iki durumda da 'form' oluşturma işlemi ' –

+0

' params [: email] 'deki e-postayı veritabanına kaydedildi mi? –

+0

Veritabanımdaki e-posta adresleri –

0

Bunu yapmak istediğinizi düşünüyorum.

def create 
    if (@user = User.find_by(email: params[:email])) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 

Sonra Bu çizgi bunu bildiğini yapmak edilmediğini form.html.erb

+0

çalışmıyor. Başka çözümünüz var mı? JQuery veya başka bir yöntem kullanarak diğer mantık. –

0
if params[:email] == User.find_by_email(params[:email]) 

yılında @user değişkeni kullanabilirsiniz. Veritabanındaki bir kullanıcıya param [- e-posta] ile bakıyorsunuz ama tüm kullanıcı nesnesini params [: email] ile karşılaştırıyorsunuz.

def create 
    #this returns true or false 
    if User.exists?(email: params[:email]) 
    flash[:notice] = "Email address already in use!" 
    redirect_to new_merchant_path 
    else 
    render 'form' 
    end 
end 
+0

Çalışmıyor. Her iki durumda da onun render formu –

İlgili konular