Tag: cancan

如何使用RSpec和Devise / CanCan进行集成testing?

如果我有一个Devise模型用户,其中只有那些angular色:admin的用户才能查看某个url,那么如何编写RSpec集成testing来检查该url的状态是否返回200? def login(user) post user_session_path, :email => user.email, :password => 'password' end 这个问题在这个问题的答案中是伪build议的: 在请求规范中对authentication进行了stubbing ,但是我不能让它和devise一起工作。 CanCan在检查Ability时没有收到一个无用户,这个用户自然没有正确的权限。 在集成规范中没有对控制器的访问权限,所以我不能存根current_user,但我想要做这样的事情。 describe "GET /users" do it "should be able to get" do clear_users_and_add_admin #does what it says… login(admin) get users_path response.status.should be(200) end end 注意!!! :自问题提出以来所有这一切都改变了。 目前最好的方法是: http : //github.com/plataformatec/devise/wiki/How-To : -Test-with-Capybara

从模型中访问CanCan的`can?`方法

你可以使用can?从视图或控制器中获取current_user的权限can? 以这种方式: <% if can? :update, @article %> <%= link_to "Edit", edit_article_path(@article) %> <% end %> 如何使用此语法从模型中访问此function: user.can?(:update, @article)