Rails 4 array.include?问题

时间:2015-01-01 20:19:44

标签: ruby-on-rails arrays string

嗨我有一个功能来检查当前控制器+动作是否包含在数组列表中,但它在这里不起作用是我的代码

功能

    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变量。

1 个答案:

答案 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之外),这一切似乎都很好。