Я следовал инструкциям CanCanCan для Rails Admin . Я получаю сообщение об ошибке ниже:
CanCan :: AccessDenied в RailsAdmin :: MainController # dashboard
У вас нет прав доступа к этой странице.
Извлеченный источник (вокруг строки # 180):
178 if cannot?(action, subject, *args)
179 message ||= unauthorized_message(action, subject)
180 raise AccessDenied.new(message, action, subject, args)
181 end
182 subject
183 end
able.rb:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
can :read, :all
can :manage, Article, user_id: user.id
return unless user.admin_role?
can :access, :rails_admin
can :read, :dashboard
can :manage, :all
end
end
rails_admin.rb:
RailsAdmin.config do |config|
## == CancanCan ==
config.authorize_with :cancancan
config.actions do
dashboard # mandatory
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
end
end
Gemfile включает в себя:
gem 'cancancan'
gem 'rails_admin', '~> 2.0', '>= 2.0.2'
Разрешения, кажется, работают нормально везде, хотя. Для пользователя есть две возможные роли: администратор или пользователь. В моей учетной записи администратора я признан администратором и могу делать то, что пользователи не могут. Например:
app / views / article / index. html .erb:
<% if can? :update, article %><td><%= link_to 'Edit', edit_article_path(article) %></td> <% end %>
Параметр «Изменить» отображается только для пользователя, который создал статью ИЛИ администратора , Это работает как ожидалось.