Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何从考拉响应解析facebook权限?_Ruby_Facebook_Ruby On Rails 3_Permissions_Koala - Fatal编程技术网

Ruby 如何从考拉响应解析facebook权限?

Ruby 如何从考拉响应解析facebook权限?,ruby,facebook,ruby-on-rails-3,permissions,koala,Ruby,Facebook,Ruby On Rails 3,Permissions,Koala,我正在使用考拉宝石获得用户权限 permissions = client.get_connections('me', 'permissions') =>[{“权限”=>“已安装”,“状态”=>“已授予”}, {“权限”=>“公共配置文件”,“状态”=>“已授予”}, {“权限”=>“读取流”,“状态”=>“已授予”}, {“权限”=>“电子邮件”,“状态”=>“已授予”}, {“权限”=>“阅读洞察”,“状态”=>“已授予”}, {“权限”=>“管理页面”,“状态”=>“已授予”}, {“权限

我正在使用考拉宝石获得用户权限

permissions = client.get_connections('me', 'permissions')
=>[{“权限”=>“已安装”,“状态”=>“已授予”}, {“权限”=>“公共配置文件”,“状态”=>“已授予”},
{“权限”=>“读取流”,“状态”=>“已授予”},
{“权限”=>“电子邮件”,“状态”=>“已授予”},
{“权限”=>“阅读洞察”,“状态”=>“已授予”},
{“权限”=>“管理页面”,“状态”=>“已授予”},
{“权限”=>“用户朋友”,“状态”=>“已授予”}]

我想用简单的字符串解析该响应以获得授权,如:
“电子邮件、阅读流、阅读见解、用户朋友”

我想:

permissions.map {|h| puts h.fetch('permission') if h.fetch('status') == 'granted'}

以下是一种可能的解决方案:

permissions.select {|h| h["status"] == "granted"}.map { |h| h["permission"] }.join(",")
编辑:

您就快到了,只需删除
放置
并将结果与
数组联接。联接

permissions.map {|h| h.fetch('permission') if h.fetch('status') == 'granted'}.join(",")
原建议

permissions.map { |h| puts h.fetch('permission') if h.fetch('status') == 'granted' }
接近但有两个问题,首先已经指出是多余的
put
call。其次,由于可能存在状态为“已授予”以外的值,因此生成的数组可能包含
nil
项,这些项在加入之前需要清除:

permissions.map { |h| h.fetch('permission') if h.fetch('status') == 'granted' }.compact.join(', ')
事实上,这似乎是一个更模糊但更有效的方法的有效案例,该方法避免了两次遍历输入:

permissions.each_with_object([]) { |h, a| a << h['permission'] if h['status'] == 'granted' }.join(', ')
permissions.each_与_对象([]){h,a | a