如何在ruby中通过两对`key => value`过滤哈希数组?

Den*_* S. 0 ruby ruby-on-rails

我有一系列哈希:

array = [
{:created_at => 1520913341, :event_id => '111', :album_id => '123'},
{:created_at => 1520740541, :event_id => '234', :album_id => '999'},
{:created_at => 1520654141, :event_id => '111', :album_id => '777'},
{:created_at => 1520394941, :event_id => '233', :album_id => '444'},
{:created_at => 1520049341, :event_id => '890', :album_id => '765'}
 ]
Run Code Online (Sandbox Code Playgroud)

我需要保持所有的哈希,:event_id如果:event_id是重复保持最早的:created_at那个.我怎么能在红宝石中做到这一点?

我希望得到以下答复:

[
{:created_at => 1520740541, :event_id => '234', :album_id => '999'},
{:created_at => 1520654141, :event_id => '111', :album_id => '777'},
{:created_at => 1520394941, :event_id => '233', :album_id => '444'},
{:created_at => 1520049341, :event_id => '890', :album_id => '765'}
 ]
Run Code Online (Sandbox Code Playgroud)

Car*_*and 5

array.sort_by { |h| h[:created_at] }.uniq { |h| h[:event_id] }
  #=> [{:created_at=>1520049341, :event_id=>"890", :album_id=>"765"},
  #    {:created_at=>1520394941, :event_id=>"233", :album_id=>"444"},
  #    {:created_at=>1520654141, :event_id=>"111", :album_id=>"777"},
  #    {:created_at=>1520740541, :event_id=>"234", :album_id=>"999"}]
Run Code Online (Sandbox Code Playgroud)

请参阅Array #uniq,特别是" self按顺序遍历,并保留第一个匹配项.".