Rails中断并返回不起作用

时间:2016-08-12 02:47:55

标签: ruby-on-rails ruby

我和考拉一起工作。我必须检查用户为该应用程序授予的权限。我做了一个名为facebook帮手的帮手。有一个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。这有什么问题?

2 个答案:

答案 0 :(得分: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'移动到自己的方法中以提高可读性。

答案 1 :(得分: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']