2015-04-24 2 views
0

Я использую механизм проверки cancancan в моем приложении rails. Я хочу, чтобы только те пользователи, которые являются владельцами своих собственных сообщений и комментариев, редактировались и удалялись, а администратор мог управлять всеми вещами. моя способность администратора работает нормально, но другие не работают. вот мой ability.rb файлcancancan способность с рельсами 4.0

class Ability 
include CanCan::Ability 

def initialize(user) 
user ||= User.new # guest user 

if user.admin? 
    can :manage, :all 

else 
    can :read, :all 
    can :create, Topic 
    can :update, Topic do |topic| 
    topic.try(:user) == user 
    end 
    can :delete, Topic do |topic| 
    topic.try(:user) == user 
    end 
    can :delete, Comment do |comment| 
    comment.try(:user) == user 
    end 
# can :manage, Comment, :task => { :user_id => user.id } 
    can :update, Comment do |comment| 
    comment.try(:user) == user 

    end 
    end 
end 

конец , что я должен сделать для того, чтобы работать должным образом. его работает должным образом на темы, но не для комментариев

это строка в моих темах contrller

load_and_authorize_resource :topic 

ответ

0

Если он работает на темы должно быть что-то не так с вашими комментариями модели. В таблице комментариев есть столбец user_id, в котором хранится автор комментария или каким-либо другим способом проверить его право собственности? Возможно, comment.try(:user) возвращает nil, а затем не дает пользователям права доступа.

Смежные вопросы