Я пытаюсь использовать авторизацию Devise с ролями CanCan в моем приложении rails3 + mongoid.Теперь я должен ограничить доступ пользователей к редактированию событий, чтобы это мог сделать только их автор.Автор события определяется по следующей строке:
<%= f.hidden_field (:author, :value =>current_user.email) %>
Итак, теперь в файле способностей CanCan я пытаюсь использовать этот код:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.role? :admin
can :manage, :all
else
can :read, :all
end
if
user.role?(:normal)
can :create, Event
can :update, Event do |event|
event.try(:author) == current_user.email
end
can :create, Comment
can :update, Comment do |comment|
comment.try(:author) == current_user.email
end
end
end
end
Но это приводит меня к этой ошибке:
неопределенная локальная переменная или метод `current_user 'для #
Затем я попытался изменить
can :update, Event do |event|
event.try(:author) == current_user.email
до
event.try(:author) == Devise.current_user.email
но это приводит к этой ошибке
неопределенный метод `current_user 'для Devise: Module
Итак, что должноЯ делаю, и как я могу вызвать метод "current_user" из способность .rb?Заранее благодарю за любые советы.