我差不多完成了。 Hartl的RoR教程中有9个,我的测试套件上有三个错误。我已经梳理过了所有东西,看起来很好,但显然不是。
这里是ERROR日志: https://gist.github.com/c7cf9884360c0b2bd05e.git
这是我的回购 https://github.com/kfrz/sample_app
HALP!
答案 0 :(得分:1)
fyi-将来请在这里添加错误和相关代码,使其更容易(尽管在github上获取完整代码非常好!)。哦,对于那些来到这里的人来说,错误的要点是
https://gist.github.com/kfrz/c7cf9884360c0b2bd05e
Allrighty,所以在阅读了你的错误日志之后,我们得到了一个未定义的方法错误“admin?”
ERROR["test_should_get_new", UsersControllerTest, 1.253923]
test_should_get_new#UsersControllerTest (1.25s)
NoMethodError: NoMethodError: undefined method `admin?' for nil:NilClass
app/controllers/users_controller.rb:71:in `admin_user'
test/controllers/users_controller_test.rb:17:in `block in <class:UsersControllerTest>'
app/controllers/users_controller.rb:71:in `admin_user'
test/controllers/users_controller_test.rb:17:in `block in <class:UsersControllerTest>'
这里的关键线是
app/controllers/users_controller.rb:71:in `admin_user'
并看一下控制器:
class UsersController < ApplicationController
before_action :logged_in_user, only: [:index, :edit, :update, :destroy]
before_action :correct_user, only: [:edit, :update]
before_action :admin_user, onlY: :destroy
#
#
#
#
#confirm admin user
def admin_user
redirect_to(root_url) unless current_user.admin?
end
end
问题实际上是在before_action
您意外地将before_action :admin_user, onlY: :destroy
将onlY:
更改为only:
以获得适当的访问控制w / before过滤器(以及管理员只能进行销毁操作),您应该好好去!
最佳, TJ