Я предлагаю немного другой подход, чтобы помочь приспособиться к вашим проверкам.
def create
@list = current_user.lists.new(params[:list])
respond_to do |format|
if (current_user.lists << @list rescue false)
format.html {...}
else
format.html {...}
end
end
end
Большая разница в том, что
current_user.lists << @list
возвращает список, если он успешно сохраняется (интерпретируется как истина, если результат не ложь или ноль), и исключение, если оно не выполняется, который вы спасаете и возвращаете ложь. Это заменяет традиционные
@list.save
, который возвращает true из false и ноль, если это не так. Правильная настройка логики для оператора if внутри блока response_to.
И это уменьшает ваши строки кода на 1.