CanCan -Как разрешить пользователям обновлять и удалять только свои собственные объекты

Я запустил приложение Rails с Devise и CanCan. У меня есть пользователи, которые имеют отношение к статьям от одного -до -многих. Я новичок в CanCan, вот что я планирую сделать:

Админ

  • может выполнять любые действия над статьями

Зарегистрированный пользователь

  • может читать и создавать статьи
  • может редактировать и уничтожать свои собственные статьи

Гость

  • может читать статьи

Но у меня проблемы с пониманием синтаксиса CanCan. Я понимаю, что это будет что-то вроде этого.

def initialize(user)
  user ||= User.new
  if user.admin?
    can :manage, Article
  else
    can :read, Article
  end
end

Но это только для администратора и гостевого пользователя, я не уверен, как отличить гостевого пользователя от вошедшего в систему пользователя, потому что он создает новый объект пользователя, когда пользователь пуст. Я видел, что код должен быть примерно таким can [:edit, :destroy], Article, :user_id => user.id, но я не уверен, как это поместится в методе инициализации.

И последний вопрос: если я определю can :read, Articleтолько для гостей, будет ли он блокировать другие действия, такие как создание и обновление, например добавление в белый список действия чтения?

Любая помощь будет оценена по достоинству. Большое спасибо!

6
задан gerky 1 August 2012 в 07:24
поделиться