2014-03-27 53 views
1

在Rails 4中,我想設置一個變量等於一個ActiveRecord對象,但只有它存在。例如,我想設置實例變量@admin等於管理員使用我通過參數傳入的給定密碼。這是我正在做它現在:有效的方法來檢查對象的存在和設置等於Rails

if Admin.find_by_email(params[:email]) 
    @admin = Admin.find_by_email(params[:email]) 
end 

我需要檢查管理員的存在與電子郵件'params[:email]'處理,其中無效的電子郵件是通過我的優勢情況下不過,這種方法需要我做2數據庫請求。我寧願只做一個並完成同樣的事情。有什麼建議麼?

回答

3

只要刪除if語句即可。如果find_by_email這樣的動態查找器沒有找到任何內容,則它將返回nil。

然後當代碼依賴於一個管理存在

unless @admin.blank? 
    #do stuff 
end 
1

你可以簡單地做:

@admin = Admin.find_by_email(params[:email]) 

而且@admin將等於零,如果沒有管理員發現

,或者使用臨時變量:

admin_tmp = Admin.find_by_email(params[:email]) 
@admin = admin_tmp if admin_tmp.present? 
+0

好吧。我以爲我已經嘗試過,並得到一個錯誤。之後我可能只是沒有做'if @ admin'檢查。謝謝! –

相關問題