Как обойти `false.blank?` В рубине на рельсах? - PullRequest
0 голосов
/ 07 сентября 2018

Мне нужно проверить булеву переменную погоду, установлено ли ее значение или нет, я бы знал, что, проверяя, содержит ли она пустую строку, "" или nil указывает, что значение не было установлено, а другое значение как true или false указывает, что значение установлено.

Я пытался использовать blank?, но у ruby ​​есть этот метод в методе blank?, который при вызове false на самом деле вернет true

false.blank? # Returns true

Таким образом, когда значение переменной было установлено равным false, для этого значения были бы ложные отрицания, как если бы переменная не была установлена.

Как проверить, что переменная не установлена ​​("", nil) или установлена ​​(true, false, 0, 1) в Ruby on Rails?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Попробуйте my_var.to_s.empty?

Я считаю, что охватывает все шесть интересующих вас случаев:

puts " show unset (nil, '') "
puts ''.to_s.empty?
puts nil.to_s.empty?

puts " show set (true, false, 0, 1) "
puts true.to_s.empty?
puts false.to_s.empty?
puts 0.to_s.empty?
puts 1.to_s.empty?

Урожайность:

show unset (nil, '') 
true 
true 
show set (true, false, 0, 1) 
false 
false 
false 
false 

Конечно, вы также можете просто сказать об этом:

def not_set?(x)
  [nil, ''].include?(x)
end
0 голосов
/ 07 сентября 2018

Я нашел самый простой способ - вызвать .to_s для переменной перед вызовом blank?

["", '', nil, false, true, 0, 1] .map {| val | val.to_s.blank?} # => [true, true, true, false, false, false, false]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...