gpt4 book ai didi

ruby-on-rails - 我的 Rails 应用程序中定义的方法 'is_admin?' 在哪里?

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

我有一些代码可以调用

current_user.is_admin?

代码工作正常,但我无法弄清楚 is_admin? 方法是在哪里定义的。我正在使用 Devise , CanCan , 和 role_model ,但该方法不在任何这些项目的源代码中,也不在我的...

我还尝试找到 owner of the method通过在 Rails 控制台中执行此操作:

current_user.method(:is_admin?).owner
=> #<Module:0x00000105253c98>

但这并没有多大帮助......

最佳答案

我通过以下方式获得了源位置:

current_user.method(:is_admin?).source_location

(感谢@BroiSatse)

这让我看到了 role_model 中的这个文件: https://github.com/martinrehfeld/role_model/blob/master/lib/role_model/class_methods.rb

事实证明 role_model 根据分配的角色动态创建方法 - 这就是它没有出现在源代码中的原因......

来自 class_methods.rb:

# Defines dynamic queries for :role
# #is_<:role>?
# #<:role>?
#
# Defines new methods which call #is?(:role)
def define_dynamic_queries(roles)
dynamic_module = Module.new do
roles.each do |role|
["#{role}?".to_sym, "is_#{role}?".to_sym].each do |method|
define_method(method) { is? role }
end
end
end
include dynamic_module
end

关于ruby-on-rails - 我的 Rails 应用程序中定义的方法 'is_admin?' 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27515599/

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