如何在一个语句中从类对象数组构建哈希

Bac*_*cko 1 ruby

我正在使用Ruby on Rails 3.0.7,我想在一个语句中执行以下操作.

我有一个类对象数组:

# >> articles.inspect
[
  #<Article id: 1,  category_id: 2, ...>,
  #<Article id: 10, category_id: 5, ...>,
  #<Article id: 6,  category_id: 9, ...>,
  #<Article id: 9,  category_id: 3, ...>,
  #<Article ...>
]
Run Code Online (Sandbox Code Playgroud)

我希望(通过使用一个语句 ;即"只有一个代码行")来构建这样的哈希:

{
  "1"   => 2,
  "10"  => 5,
  "6"   => 9,
  "9"   => 3,
  "..." => ...,
}
Run Code Online (Sandbox Code Playgroud)

其中散列键是article.id值,散列值是article.category_id值.

我怎样才能做到这一点?

Jos*_*ith 5

 >> articles.inject({}) { |k,v| k[v.id] = v.category_id; k }
Run Code Online (Sandbox Code Playgroud)