我已经安装了rails_admin
gem而没有任何错误,其显示模型也是如此,但我要求我需要显示current_user
登录相关数据
例如,用户有很多书籍,所以在rails admin我只想要那本用户手册,但目前它显示所有用户书籍,这是rails_admin的默认行为
我还尝试使用cancancan
gem来实现相同的功能,但是我的rails_admin
初始化程序配置不能正常工作
rails_admin.rb
RailsAdmin.config do |config|
### Popular gems integration
## == Devise ==
config.authenticate_with do
warden.authenticate! scope: :user
end
config.current_user_method(&:current_user)
config.parent_controller = 'ApplicationController'
## == Cancan ==
config.authorize_with :cancan,UserAbility
## == Pundit ==
# config.authorize_with :pundit
config.included_models = ["Book","User"]
config.actions do
dashboard # mandatory
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
end
end
UserAbility Class实现如下
class UserAbility
include CanCan::Ability
def initialize(user)
# Define abilities for the passed in user here. For example:
if user.present?
can :access, :dashboard
can :manage, :Book,id:user.id
end
end
end
答案 0 :(得分:3)
而不是can :manage, :Book,id:user.id
,请尝试使用:
can :read, Book, user_id: user.id
所以这些能力一起看起来像:
can :access, :rails_admin
can :dashboard
can :read, Book, user_id: user.id
答案 1 :(得分:2)
我认为你误解了Rails Admin的范围。从本质上讲,它是数据库的快照,适用于更多管理操作,例如查询数据库中的特定内容。
您唯一可以做的就是查找给定用户的所有Book
,默认值为 all 所有用户的图书。显示内容中存在过滤器,可以根据用户的特定凭据(例如用户名,电子邮件或ID)缩小范围。
对于概念性检查,Rails Admin中的用户不会被视为或被视为与应用程序中的用户相同。相反,可以考虑使用Rails Admin来检查数据库中的数据,而不是显示特定的,经过身份验证的人员的数据。
正如您所描述的,更合适的Rails方法是为这些数据创建控制器和路由,并简单地使用current_user.books
获取当前用户的所有书籍。