2016-08-12 32 views
0

我正在與考拉合作。我必須檢查用戶爲應用程序授予的權限。我做了一個叫做助手的幫手。有一個def has_permission?(perm)。我的代碼如下:導軌破裂並返回不工作

def has_permission? (perm) 
    @graph = Koala::Facebook::API.new(current_user.token) 
    @permissions = @graph.get_connections('me', 'permissions') 
    @bool = false 
    @permissions.each do |p| 
    if p[0] == perm && p[1] == 'granted' 
    @bool = true 
    break 
    end 
    end 
return @bool 
end 

它總是返回false。這有什麼問題?

回答

0

我解決了它自己:

def has_permission? (perm) 
    @graph = Koala::Facebook::API.new(current_user.token) 
    @permissions = @graph.get_connections('me', 'permissions') 
    # binding.pry 
    @bool = false 
    @permissions.each do |p| 
    if (p['permission'] == perm && p['status'] == 'granted') 
     @bool = true 
     break 
    end 
    end 
    @bool 
end 

只是改變p[0]p['permission']p[1]p['status']

1

你的@permissions是否被填充?你也可以這樣寫沒有break

def has_permission? (perm) 
    @graph = Koala::Facebook::API.new(current_user.token) 
    @permissions = @graph.get_connections('me', 'permissions') 
    @bool = false 
    @permissions.each do |p| 
    unless @bool 
     @bool = (p[0] == perm && p[1] == 'granted') 
    end 
    end 
    @bool 
end 

我也動p[0] == perm && p[1] == 'granted'到它自己的方法,以提高可讀性。

+0

謝謝您的回答。但我不想使用,除非在多線實施。 –

+0

'除非'只是寫'if'的另一種方式,所以你可以這樣做。無論哪種方式,'@ bool'的值都取決於'(p ['permission'] == perm && p ['status'] ==''''''),因此最好將它分配給'@ bool' IMO 。 這樣做也消除了使用'break',所以一點清潔劑。 –