-1

API チームから、アイテムの 1 つの空のキーを含むハッシュ リターンを取得しています。応答は次のようになります。

user = [
  {
    'name' : 'John Doe',
    'roles' : {
      '' : 'admin',
      'team2' : 'user'
    }
]

roles['']キーの名前を のように変更したいのですroles['default']が、その方法が見つかりません。私がこのようなことをしようとすると:

user.roles.each {|r| r['default'] = r.delete('')}

戻りますCan't convert String into Integer

APIリターンを書き直す以外に、これを達成する別の方法はありますか(テーブルから外れていることが明らかになりました)。

4

2 に答える 2

1

eachロールを呼び出す必要はありません。これにより、すべてのキーと値のペアが列挙されます。1足だけ気になるとき。これはそれを行う必要があります:

user.roles['default'] = user.roles.delete('')

編集

user = {
    'name' => 'John Doe',
    'roles' => {
      ''  => 'admin',
      'team2'  => 'user'
    }
  }

user['roles']['default'] = user['roles'].delete('')

user # => {"name"=>"John Doe", "roles"=>{"team2"=>"user", "default"=>"admin"}}
于 2013-09-03T14:16:38.573 に答える
0
h = user[0].roles
h.select {|k, v| k == ''}.each { h['default'] = h['']; h.delete('') }
于 2013-09-03T14:22:38.027 に答える