2015-01-01 57 views
-1

嗨,我有一个函数来检查,如果电流控制器+操作包括在数组列表,但它不是在这里工作是我的代码Rails 4 array.include?问题

功能

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(“串” )静态字符串它正在工作,但不与cur_path变量。

+0

'allowed_acl'从哪里来? –

+0

有点偏离主题:你的'confirm_access'方法可能只包含'allowed_acl.include? section'。有没有必要把它包装在'if .. return ... else return ...' – GolfWolf

+0

@mr rogers请现在检查我已经包括'allowed_acl'数组 –

回答

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之外),似乎一切正常。