2015-02-11 55 views
0

我是Ruby on Rails的新手,並且堅持一些基本邏輯,讓我的Rails check_in方法返回「true」或「false」。下面的代碼和邏輯正在工作,但它是「醜陋的」,需要重構。基本Ruby邏輯 - 返回對或錯

def check_in 
    @user = User.find_by_username(params[:username]) 
    if @user && @user.authenticate(params[:token]) 
    return true 
    else 
    return false 
    end 
end  

什麼是更優雅的方式來做到這一點?

+5

我投票,因爲關於重構工作代碼的問題是http://codereview.stackexchange.com/更適合 – 2015-02-11 03:05:01

+0

感謝您的幫助......對不起,如果關閉這個問題作爲題外話我發表主題 – 2015-02-11 04:13:35

回答

1

由於您的if條件已經評估到您想要的布爾值,因此您可以簡單地將其返回。此外,在Ruby中,您不需要明確使用return @user && @user.authenticate(params[:token]),因爲方法中最後一條語句的值將自動用作返回值。

def check_in 
    @user = User.find_by_username(params[:username]) 
    @user && @user.authenticate(params[:token]) 
end 
+0

從技術上講,爲了使其行爲與示例代碼完全相同,您需要執行@user && @ user.authenticate(params [:token])&& true ||假'... – 2015-02-11 04:47:34

+0

或'!!(@ user && @ user.authenticate(params [:token]))'' – Satya 2015-02-11 05:09:27