Ruby on rails 从散列值准备字符串的优雅方法

Ruby on rails 从散列值准备字符串的优雅方法,ruby-on-rails,ruby,ruby-hash,Ruby On Rails,Ruby,Ruby Hash,下面是我的杂烩 my_hash = { "unique_id": [ { "code": "1001", "message": "The unique id has already been taken." } ] } 我想从上面散列的值中准备一个字符串。前任。 “1001已获取唯一id。” 到目前为止,我能够得到以下结果 my_hash.valu

下面是我的杂烩

my_hash = {
  "unique_id": [
    {
      "code": "1001",
      "message": "The unique id has already been taken."
    }
  ]
}
我想从上面散列的值中准备一个字符串。前任。
“1001已获取唯一id。”

到目前为止,我能够得到以下结果

my_hash.values.flatten.map {|a| a.values.join('-')}.join(',')
我想知道有没有更好的办法

更新:
my_hash
可以有多个散列值

{“unique_id”:[{“code”:“1001”,“message”:“unique id已被获取”。}],“user_id”:[{“code”:“1002”,“message”:“user id已被获取”。}]


并且期望值
“1001已获取唯一id,1002已获取用户id。”

以下是一个较短的版本:

my_hash[:unique_id].first.values.join("-")


我更新了我的hash评论@Camillle。哈希可以有多个值。更新的预期字符串@CarySwovelandOne通常不包含带符号的引号,除非需要它们(当符号由多个单词组成时:
:“my dog saffi”
)<代码>“代码”:“1001”,
代码:“1001”
:“code”=>“1001”
:code=>“1001”
都是等效的。@CarySwoveland即使哈希是
{:unique\u id=>[{:code=>“1001”,:message=>“唯一id已经被取了。”}],:user\id=>[{:code=>“1002”,:message=>“用户id已经被取了。”}}
如何缩短我难看的代码?如果同一属性有多个错误,预期的输出是什么?
my_hash = {"unique_id":[{"code":"1001","message":"The unique id has already been taken"}],"user_id":[{"code":"1002","message":"The user id has already been taken"}]} 


my_hash.flat_map {|k,v| v.map(&:values).join '-'}.to_sentence
my_hash.flat_map {|k,v| v.map(&:values).join '-'}.join ','
my_hash = {"unique_id":[{"code":"1001","message":"The unique id has already been taken."}], "user_id":[{"code":"1002","message":"The user id has already been taken."}]}

my_hash.values.map{|v| v.map{|a| "#{a[:code]}-#{a[:message]}"}}.flatten.join(",")