2013-07-30 84 views
-2

編寫一個rails應用程序我有一個if語句,它首先檢查3個變量是否爲零,如果任何變量爲零,應該終止。rails if if nil = false

問題是variable_name.nil?語法只檢查一個變量是否爲零。我如何檢查一個變量是不是零?實質上,如果變量不爲零,我希望它返回「真」。

def my_status (product) 
    product_sales = product.line_items.total_product_sale.sum("quantity") 

    if (product.volume.nil? && product.volume2.nil? && product.volume.nil?) 
    if (product_sales >= product.volume) && (product_sales < product.volume2) 
     level1_status = 'Flipped' 
    elsif (product_sales >= product.volume2) && (product_sales < product.volume3) 
     my_status = "Flipped" 
    elsif (product_sales >= product.volume3) 
     my_status = "Flipped" 
    else 
     my_status = "In Play" 
    end 
    end 
end 
+0

如果'product.volume'是'nil',那麼它是'nil'。你的情況是多餘的。 – sawa

+0

你是指什麼三個變量? – sawa

回答

0

您可以在一個初始化的變量執行if聲明,如果它不是零直接返回true(注意,這也考驗感實性,用它只有當項目無法返回false):

if variable1 && variable2 && variable3 
    do things 
end 

實際上是等於這個僞代碼:

if variable1 is not null AND variable2 is not null AND variable3 is not null 
    do things 
end 

這是一個在軌共同但使用unless語法的那種檢查喲u的表演,我會在你的情況建議如下:

unless variable1.nil? || variable2.nil? || variable3.nil? 
    do things 
end 
+1

完成,謝謝你的建議@sawa – Matt

+0

erm'如果變量'是檢查真實性,而不是值是否爲零。它相當於'if variable!= nil && variable!= false'(因爲在ruby中,唯一的非真值是'nil'和'false')。 – nzifnab

+0

另外,我真的會避開除了單個條件之外的任何東西。當你開始鏈接「||」和「&&」時,很難快速閱讀/理解(也許這只是我個人的偏好) – nzifnab

1

如果你沒有考慮任何的三個變量是false(相對於nil)的可能性,那麼:

[x, y, z].all? 
+0

product.volume,product.volume2,product.volume3 – Renegade