2011-06-29 27 views
0

我正在存儲在DB表數據中。在一列中可以是值NULL和一個字符串。我不能找一個條件,是一個字符串時 - >打印這個字符串,就當是NULL,去做別的事情......Ruby - 變量不是NULL幷包含字符串

我想是這樣的:

if @optional.logo.size > 3 && [email protected]? 
    ...In table is a STRING... 
else 
    ...In table is NULL... 
end 

但這是錯誤的...任何人都可以幫助我,請問如何解決它? 謝謝

+0

它是Rails的ActiveRecord? –

+0

如果@optional也是零,這可能會失敗。 – mikeycgto

回答

3

您必須首先測試nil,因爲零對象不具有size屬性。

2

左右切換後,首先做的nil檢查:

if [email protected]? && @optional.logo.size > 3 

&&操作是所謂的「短路」。這意味着如果第一個參數的計算結果爲false,那麼第二個參數就不會被評估,因爲這沒關係。換句話說,如果第一個參數是false,那麼無論參數部分如何,整個表達式都將爲false。 ||運算符的工作方式與此類似,但如果第一個參數爲true,則不計算第二個參數,因爲無論第二個參數的值如何,都會使整個表達式成爲真。

通過首先檢查nil,您可以避免nil將不會有size方法的問題,因爲該表達式的該部分將永遠不會被評估。