2017-09-02 18 views
-1

我不明白,爲什麼在條件不工作, 我想執行的一部分,如果用戶名和密碼都爲空我不好寫我的紅寶石條件

post '/login' do 

    credentials = CGI.parse request.body.read 

    if credentials['username'].nil? || credentials['password'].nil? 
    status 603 
    return ; 
    end 
end 

回答

2

您使用了錯誤的邏輯運算符,OR(||)代替AND(&&

post '/login' do 

    credentials = CGI.parse request.body.read 

    if missing_credentials? 
    status 603 
    return ; 
    end 
end 

private 

def missing_credentials? 
    credentials['username'].nil? && credentials['password'].nil? 
end 
+2

它不是」噸多OOP,雖然:) –

+0

哈哈夠公平,這是我能想到的最接近的術語@SergioTulentsev, –

1

你的問題表明您希望如果用戶名和密碼是零要執行的代碼。如果用戶名或密碼爲零,您的代碼將執行。

但更有意義的是,如果任何一個部分丟失,您都希望執行代碼。假設這是你想要什麼,我會寫的條件爲:

unless credentials['username'] && credentials['password'] 

如果你確實想執行只有兩件丟失的代碼,那麼你可以做:

unless credentials['username'] || credentials['password']