Я пытаюсь написать логику для поискового запроса. Есть много разных условий с разными параметрами. Один параметр, отправляемый из формы - code
. Таким образом, в двух разных таблицах есть значения code
: competitions
и responses
. Мне нужно сначала проверить значение params[:code]
в таблице competitions
, а если оно не существует, то проверить в таблице responses
. Если он не существует ни в одной из таблиц, он должен вернуть nil
. Я пытаюсь записать это в одном if
заявлении. Код, который я попробовал, приведен ниже:
competitions = Competition.includes(:event, :responses)
if params[:code].present?
competitions = (competitions.where(code: params[:code])) ||
(competitions.joins(:responses).where(responses: { code: params[:code] }))
Приведенный выше код проверяет только значение competitions.where(code: params[:code])
. Если это значение []
, то оно не оценивает второе условие. Какие изменения я должен сделать, чтобы приведенный выше код работал в соответствии с требованиями, указанными выше?