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 之外),一切似乎都运行良好。