嗨我有一个功能来检查当前控制器+动作是否包含在数组列表中,但它在这里不起作用是我的代码
功能
def verify
cur_path = params[:controller] +'/'+ params[:action]
confirm_access(cur_path)
end
def confirm_access(section)
user_group = UserGroup.find(1)
allowed_acl = Array.new
user_group.access_sections.each do |d|
allowed_acl << d.section
end
if allowed_acl.include? section
return true
else
#false
end
end
但是当我传递confirm_access(&#34; string&#34;)静态字符串时,它正在工作,但没有使用cur_path变量。
答案 0 :(得分:0)
很难弄清楚什么是不对的。从表面上看,似乎应该可以正常工作。
我想知道你是否简化了代码,然后你可以更好地调试它。
首先,您可以向UserGroup添加一个方法,为您提供所需的acls
。
class UserGroup < ActiveRecord::Base
...
def allowed_acl
access_sections.map(&:section)
end
end
然后你的控制器方法变得更加简单
def verify
cur_path = params[:controller] +'/'+ params[:action]
confirm_access(cur_path)
end
def confirm_access(section)
UserGroup.find(1).allowed_acl.include? section
end
在这一点上,您应该能够查看允许的ACL列表,并确保您希望发生的匹配正在发生。我嘲笑这个(在Rails之外),这一切似乎都很好。