Rails 4 array.include?问题
Rails 4 array.include? issue
您好,我有一个功能可以检查当前控制器 + 操作是否包含在数组列表中,但它在这里不起作用是我的代码
函数
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("string") 静态字符串时它可以工作但不能使用 cur_path 变量。
真的很难找出问题所在。从表面上看,它似乎应该可以正常工作。
我想知道你是否简化了代码,这样你就可以更好地调试。
首先,您可以向 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 之外),一切似乎都运行良好。
您好,我有一个功能可以检查当前控制器 + 操作是否包含在数组列表中,但它在这里不起作用是我的代码
函数
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("string") 静态字符串时它可以工作但不能使用 cur_path 变量。
真的很难找出问题所在。从表面上看,它似乎应该可以正常工作。
我想知道你是否简化了代码,这样你就可以更好地调试。
首先,您可以向 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 之外),一切似乎都运行良好。