[英]rails_admin and cancancan undefined method `accessible_by' for Product:Class
我是 ruby-on-rails 的新手,我正在尋找一種方法讓我的 rails_admin 儀表板只能由超級管理員用戶訪問。 我發現 rails_admin gem 與另一個 gem 完全兼容:cancancan,用於管理授權。
我按照本指南: https://github.com/sferik/rails_admin/wiki/Cancancan正確配置 rails_admin,結果如下:
配置/初始化程序/rails_admin.rb :
RailsAdmin.config do |config|
# == Devise ==
config.authenticate_with do
warden.authenticate! scope: :user
end
config.current_user_method(&:current_user)
# == CancanCan ==
config.authorize_with :cancancan
config.actions do
dashboard # mandatory
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
end
end
應用程序/模型/能力.rb :
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
can :read, :all
if user.superadmin_role?
can :access, :rails_admin
can :read, :dashboard
can :manage, :all
elsif user.admin_role?
can :manage, :all
end
end
end
當我創建項目時,我跳過了活動記錄。 目前,我制作的唯一支架是一個名為 Product 的 class。
導航到 localhost:3000/admin 時,我不斷收到此錯誤:
NoMethodError in RailsAdmin::MainController#dashboard
undefined method `accessible_by' for Product:Class
我不知道在哪里以及如何定義這個“accessible_by”方法。 此外,我發現在此鏈接上https://github.com/CanCanCommunity/cancancan/wiki/Fetching-Records被告知不使用活動記錄需要 model 適配器。
我在 MacOS 11.15.6 上使用並且:
有人可以幫我理解我做錯了什么嗎? 謝謝:)
好,我知道了!
我通過以下步驟解決了問題:
首先:如果當前正在運行,請停止rails server
安裝cancancan-mongoid
gem。 只需在您的 Gemfile 中輸入gem 'cancancan-mongoid'
,在現有的 cancancan gem 聲明下。 然后運行bundle install
。 我參考了這個頁面: https://github.com/CanCanCommunity/cancancan-mongoid
檢查 Gemfile 中 gem 的順序是否如下所示:
mongoid
cancancan
cancancan-mongoid
rails_admin
前三個步驟應該可以解決問題,但如果問題仍然存在,請繼續執行最后一步:
cancan_mongoid.rb
的新文件並將其放在config/initializers
文件夾中,然后粘貼此處顯示的完整代碼: https://gist.github.com/bowsersenior/561639這對我有用::)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.