Ruby on Rails 4 — где оператор аварийно завершает работу, когда nil

Я пытаюсь найти базу данных имен как по фамилии, так и по девичьей фамилии. Однако, если девичья фамилия равна нулю,то поиск завершает работу. Я создал работу с инструкцией if / then, но хочу узнать правильный (более чистый) способ сделать это в ruby.

  if user.maiden_name.nil?        
    x = Alumni.where(firstname: user.first_name, lastname: user.last_name)
  else
    x = Alumni.where(firstname: user.first_name, lastname: [user.last_name, user.maiden_name])
  end

Спасибо!

1 ответ

  1. можно избежать nilусловия value in whereпутем добавления #compactapplied к args array, следующим образом:

    Alumni.where(firstname: user.first_name,
       lastname: [user.last_name, user.maiden_name].compact)
    

    Но действительно ли вы этого хотите?