2016-08-31 5 views
0

Я хочу что-то проверить. Если false сделайте это. Я не хочу проверять истину, только ложь. Мой код выглядит следующим образом, и мне нужно только, чтобы сделать что-то, если ложное:Проверьте, если false, а затем введите код

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

Мой код работает после else чего я хочу. Есть ли чистый метод рельсов/рубинов, который проверяет ложь? Мой код будет работать только в том случае, если false, а не true.

Если дубликат, я с удовольствием удалю его. Благодаря

ответ

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' is sugar for' if! (Expression) '. Это отрицает выражение без необходимости указывать '!' Там. – Makoto

+0

Вы можете использовать 'if not', если вы не хотите использовать' except' – 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

Dont't do '== false' для проверки того, не выполнено ли условие! Ruby имеет два способа представить ложь: 'FalseClass' и' NilClass'. С вашим подходом вы поймаете только первое. Сравнение ** ** полезно, если вы работаете с трехзначной логикой. Например, у вас есть функция, в которой вывод может быть * true *, * false * и * not know *, и вы решили моделировать это с помощью 'true',' false' и 'nil'. В этом случае вы действительно сравните с помощью '... == false'. – user1934428

+0

@ пользователь1934428: точно. :) – Felix

Смежные вопросы