Это один из тех вопросов, которые вы только что знаете, заставит вас чувствовать себя глупо, когда вы знаете ответ, но я просто не могу заставить эту штуку работать, так что дальше. В railstutorial.org я пытаюсь выполнить упражнение 5 в конце главы 10, но следующий код неисправен, и каждый вариант, который я пробую (например, с использованием «если»), не работает. Я просто хочу выполнить две строки кода, если текущий пользователь не является администратором. Куда я иду не так?
def destroy
if !current_user.admin?
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
end
redirect_to users_path
end
РЕДАКТИРОВАТЬ: я путал текущего пользователя с пользователем, которого нужно удалить. Я использую код Адитьи, который, я уверен, правильный, но теперь я получаю сообщение «не могу запустить тесты», в котором говорится, что в моих тестах есть синтаксическая ошибка (ниже).
describe "as an admin user" do
before(:each) do
admin = Factory(:user, :email => "admin@example.com", :admin => true)
test_sign_in(admin)
end
it "should not allow an admin user to destroy himself" do
lambda do
delete :destroy, :id => admin
end.should_not change(User, :count)
end
end