我正在浏览railstutorial.org上的最新rails指南,我仍然坚持参加某项练习(http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users#sec:updating_deleting_exercises上的#8 ).你必须写一个rspec/capybara测试,以确保管理员不能删除自己.我有实施工作,但无法让测试工作正常.这是我的代码.我在这里发现了类似的问题:Ruby on Rails语法和https://getsatisfaction.com/railstutorial/topics/how_to_prevent_admin_user_from_deleting_theself.但我认为这是一个较旧的教程而不是同一个问题.
以下是spec/requests/user_pages_spec.rb中的相关代码:
describe "User pages" do
subject { page }
describe "delete links" do
describe "as an admin user" do
let(:admin) { FactoryGirl.create(:admin) }
before do
sign_in admin
visit users_path
end
it "should not be able to delete themself" do
expect { admin.delete }.should_not change(User, :count)
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
错误消息表示用户数减少了1.
为了完整性,这是我的(工作)实现:
class UsersController < ApplicationController
before_filter :current_admin, only: :destroy
def current_admin
@user = User.find(params[:id])
redirect_to users_path, notice: "Cannot delete …Run Code Online (Sandbox Code Playgroud)