Как проверить значение null в ruby ​​на рельсах 3? - PullRequest
0 голосов
/ 23 января 2019

У меня есть новые задания для массива, а j.id начинается с 423, и цикл создает индекс массива от 0 до общего числа заданий с нулевым значением от 0 до 422.Итак, мой вопрос, как установить условие, чтобы проверить нулевое значение j.name?

@jobs = []
demo.demojobs.each do | j |
    if j.name != null #condition 
        @jobs[j.id] = j.name
    end
end 

Я работаю на рельсах версии 3.2.11

Вывод:

pipe
0: null
1: null
.
.
.
.
423:    "jobname"
424:    "jobname"
425:    "jobname"
426:    "jobname"
427:    "jobname"

Ответы [ 4 ]

0 голосов
/ 23 января 2019

как задать условие для проверки нулевого значения j.name?

Существует множество способов проверить нулевое / nil или пустую строку в ruby ​​

  1. присутствует? Это вернет true или false

    j.name.present?
    
  2. blank? Это противоположноpresent?

    j.name.blank?
    
  3. j.name == nil

  4. empty? можно использовать для строк, массивов и хэшей.

Редактировать:

@jobs = {}
#in your loop
@jobs[j.id] = j.name if j.name #you can use any condition here to check nil
0 голосов
/ 23 января 2019

это nil в рубине, а не null Вы можете проверить, является ли объект nil, вызвав present? или blank?.

j.name.present?

это вернет false, если имя является пустой строкой или nil.

или вы можете использовать

j.name.blank?
0 голосов
/ 23 января 2019

nil значение интерпретируется как ложное в условиях, поэтому вы можете написать:

@jobs = []
demo.demojobs.each do | j |
    if j.name 
        @jobs[j.id] = j.name
    end
end 

или более кратко:

@jobs = []
demo.demojobs.each do | j |         
  @jobs[j.id] = j.name if j.name
end 

Вы также можете использовать #nil? метод, если вы хотите проверить явно:

@jobs = []
demo.demojobs.each do | j |
    if !j.nil? 
        @jobs[j.id] = j.name
    end
end 

Есть хороший блог, объясняющий различные варианты: https://blog.arkency.com/2017/07/nil-empty-blank-ruby-rails-difference/

0 голосов
/ 23 января 2019

Вы можете использовать present? или blank? в состоянии.Ваш код должен быть

if j.name.present? #condition 
   @jobs[j.id] = j.name
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...