gpt4 book ai didi

ruby-on-rails - current_user 和 active_admin

转载 作者:行者123 更新时间:2023-12-01 02:42:57 25 4
gpt4 key购买 nike

我已经尝试了所有可能的方法,但似乎无法使用 cancan 来限制 active_admin 中的 scope_to 方法。

我可以让菜单和大多数其他方法一样好用,但 scope_to 不行

例如这工作正常:

menu :if => proc{ can?(:manage, Booking) }

但不是
scope_to :current_user, :association_method => :space_bookings unless proc{ can?(:manage, Booking) }

或者
scope_to :current_user, :association_method => :space_bookings unless proc{ current_user.admin? }

或者
scope_to :current_user, :association_method => :space_bookings unless controller.current_ability.can?( :manage, config.resource )

如果我尝试在没有 proc 的情况下使用 current_user 方法,我会收到一个未定义的错误。 current_user 方法由 devise 定义,也在 active_admin.rb 中定义
  # == Current User
#
# Active Admin will associate actions with the current
# user performing them.
#
# This setting changes the method which Active Admin calls
# to return the currently logged in user.
config.current_user_method = :current_user

有什么想法可以访问 current_user 方法吗?它适用于我需要它的其他任何地方。

最佳答案

访问方法,即使是那些在 active_admin 中的 application_controller 中的方法,也常常是痛苦的。

但是您可以通过显式重写 Controller 来完全跳过它,这并不理想,但它有效。

 controller do 
# authorize_resource
def index
if can? :manage, :all
@bookings = Booking.page params[:page] #you must call .page for the index to work.
else
@bookings = current_user.bookings.page params[:page]
end
index! #this is needed unless you are using custom views
end
end

关于ruby-on-rails - current_user 和 active_admin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7687940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com