gpt4 book ai didi

ruby-on-rails - 如何根据操作使 before_filter 函数表现不同?

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:56 24 4
gpt4 key购买 nike

我正在尝试使我的身份验证/权限代码更加简洁。

目前我有这个:

  def index
require_role "normal" do
@projects = Project.all
respond_to do |format|
format.html
end
end
end

其中 require_role 负责检查权限并在您尝试执行不该执行的操作时重定向到错误页面。

我希望能够在每个 Controller 的顶部放置这样的东西:

require_role "admin", [:delete]
require_role "normal", [:edit, :new, :create]
require_role "guest", [:show, :index]

定义如下:

 def self.require_perm( role_name, actions )
before_filter :require_perm_admin, :only => actions
end

唯一的问题是我必须硬编码方法的名称,require_perm_admin。这意味着,如果我添加新角色,我必须为每个角色定义一个方法。

是否可以将动态命名的方法添加到类中?例如“check_role_admin”、“check_role_guest”等

否则,我能否从我的 before_filter 函数中判断将调用什么操作?

最佳答案

如果你只需要当前的 Action 名,你可以在before_filter中调用action_name。如果您认为这就是您所需要的,我会把剩下的留给您:)

关于ruby-on-rails - 如何根据操作使 before_filter 函数表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4715350/

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