Получение первого элемента пустого массива

Учитывая массив, содержащий ноль или один элемент, как мне вернуть первый элемент или ноль?

У меня есть рабочий код, но он не очень изящный:

class Category < ActiveRecord::Model
  adapter sqlite

  table_name "categories"

  primary id      : Int
  field parent_id : Int
  field name      : String

  # return a category or nil
  def self.root
    roots = where(criteria("parent_id").is_null)

    if roots.empty?
      nil
    else
      roots.first
    end⋅
  end
end

person Kris    schedule 06.04.2016    source источник


Ответы (1)


Вы можете просто вызвать first? в массиве:

  def self.root
    where(criteria("parent_id").is_null).first?
  end
person Jonne Haß    schedule 06.04.2016
comment
Я думал, что first? вернет логическое значение, как в соглашении Ruby. - person Kris; 07.04.2016