Я пишу приложение в RoR, и мне было интересно, если следующий, если заявление должно быть помещено туда:
class ArticlesController < ApplicationController
before_action :set_user, only: %i[destroy edit]
...
def destroy
if @article.destroy
flash[:success] = 'Article deleted'
redirect_to articles_path
else
flash[:error] = 'Failed to delete the article'
redirect_to article_path(@article)
end
end
...
private
def set_user
@article = Article.find(params[:id])
if current_user.id == @article.author_id
@author = current_user
else
redirect_to article_path(@article), message: 'You can\'t do that'
end
end
end
Возможно ли вызывать ветку "else", которую я уничтожаю? Я пишу спецификации для этого контроллера, и я не могу придумать, как протестировать этот код.
Я использовал тот же подход, что и для «.save», но там мы имеем дело с проверкой БД. Если нет возможности вызвать «else», я просто удалю эти строки.
Что-то не так с поиском владельца статьи или поиском статьи по идентификатору, ошибка будет присутствовать раньше, в методе "set_user".