2016-06-27 5 views
0

Я внедряю CanCanCan в первый раз.Почему пользователь может создавать сообщения, если `can not: manage, Post` в классе Ability (CanCanCan)?

Но я смущен, почему пользователи могут создавать сообщения, когда я установил cannot :manage, Post в классе Ability.

class Ability 
    include CanCan::Ability 

    def initialize(user) 
    user ||= User.new # if a non-signedin visitor 
    cannot :manage, Post 
    end 
end 

Я понимаю, что :manage распространяется на все действия, так что пользователь не должен быть в состоянии сделать что-нибудь с post ресурса.

Может ли кто-нибудь посоветовать?

+2

Похоже, просто нужно добавить '' load_and_authorize_resource' в posts_controller.rb'. Затем работает так, как ожидалось. –

ответ

0

Вы добавили это вокруг индекса, показываете и редактируете страницы ссылок CRUD на вашем приложении? что удалит ссылку все вместе. Я все еще новичок в cancancan, но даже с load_and_authorize_resources мне все равно пришлось добавить if can? вокруг моих ссылок, и это решило мою проблему.

<% if can? :manage, Post %> 
    <% link_to "something" some_path %> 
<% end %> 

надеюсь, что это помогает