我有以下哈希数组:
@products = {#<ProductProxy:0xb486d148 @pA={"productAvailableDateTs"=>"2013-12-04T23:07:12.592Z", "mPrice"=>, "pStock"=>, "id"=>, "productId"=>, "productDesignerId"=>}>,
#<ProductProxy:0xb4adf304 @pA={"productAvailableDateTs"=>"2013-1-04T23:07:12.592Z", "mPrice"=>, "pStock"=>, "id"=>, "productId"=>, "productDesignerId"=>}>,
#<ProductProxy:0xb4adecec @pA={"productAvailableDateTs"=>"2013-15-03T23:07:12.592Z", "mPrice"=>, "pStock"=>, "id"=>, "productId"=>, "productDesignerId"=>}>,
...
}
我想根据productAvailableDateTs
值按降序对数组进行排序。我尝试了以下操作:
@products = @products.sort_by{ |k| -k['productAvailableDateTs'] }
但是这样做,我无法访问productAvailableDateTs
字段。我试图打印@products[0]['productAvailableDateTs']
。但它会打印nil
。如何正确访问该字段?
答案 0 :(得分:1)
如果您不需要数据按数据库排序(假设您从活动记录中获取了数据),则可以将其转换为数组然后对其进行排序:
@products.to_a.sort{ |a,b| b.productAvailableDateTs <=> a.productAvailableDateTs }
如果它已经是一个数组:
@products.sort{ |a,b| b.productAvailableDateTs <=> a.productAvailableDateTs }
编辑:错过了订单。通过更改第一个和第二个参数来实现订单。