2016-08-31 35 views
0

我想測試一些東西。如果false這樣做。我不想測試真實的,只是虛假的。我的代碼看起來是這樣的,我只需要做一些事情,如果假:檢查是否爲假,然後運行代碼

if Model.exists?(table_column: 'joe') 
    # this part is blank 
else 
# run this code 
end 

我的代碼else運行後這是我想要的。有沒有一個乾淨的rails/ruby​​方法來測試錯誤?我的代碼只會運行,如果錯誤,不正確。

如果重複,我會很樂意刪除。由於

回答

5

使用unless

unless Model.exists?(table_column: 'joe') 
    # run code 
end 

if not

if not Model.exists?(table_column: 'joe') 
    # run code 
end 

if Model.find_by(table_column: 'joe').blank? 
    # run code 
end 

希望幫助!

+0

我從來沒有'除非'的大粉絲。任何其他方式?如果不是,看起來對我很好。 – Sylar

+1

@Sylar:'除非'是'if!(表達)'的糖。它否定了表達式,而不需要在那裏指定'!'。 – Makoto

+0

如果你不想使用'if',那麼你可以使用'if',但是' – RSB

1

要添加一些其他的流行選擇(@RSB:隨意這些複製到你的答案):

使用 '!':

if !Model.exists?(table_column: 'joe') 
    # A single '!' negates 
end 

使用 '==':

if Model.exists?(table_column: 'joe') == false 
    # compared against false 
end 

請注意,在這些方法中存在輕微(但潛在戲劇性)的差異,在網絡上搜索「虛假」,「真實」或「真實性」以及您最喜歡的編程語言。

要選擇哪種解決方案很大程度上取決於您的風格和手頭上的表情(例如my_value == false真的很明確,如果my_value = nil不符合要求)。

+1

不要用'== false'來檢查條件是否滿足! Ruby有兩種表示虛假的方式:FalseClass和NilClass。用你的方法,你只捕獲前者。如果你使用三值邏輯,那麼比較**是有用的。例如,你有一個函數,其輸出可以是* true *,* false *和*不知道*,並且你決定用'true','false'和'nil'來建模。在這種情況下,你確實可以用'... == false'進行比較。 – user1934428

+0

@ user1934428:正好。 :) – Felix

相關問題