获取Ruby Hash的独特内容

时间:2013-06-21 19:58:05

标签: ruby ruby-on-rails-3 hash

我有一个Hash @estate:

    [#<Estate id: 1, Name: "Thane ", Address: "Thane St.", created_at: "2013-06-21 16:40:50", updated_at: "2013-06-21 16:40:50", user_id: 2, asset_file_name: "DSC02358.JPG", asset_content_type: "image/jpeg", asset_file_size: 5520613, asset_updated_at: "2013-06-21 16:40:49", Mgmt: "abc">,
    #<Estate id: 2, Name: "Mumbai", Address: "Mumbai St.", created_at: "2013-06-21 19:13:59", updated_at: "2013-06-21 19:14:28", user_id: 2, asset_file_name: "DSC02359.JPG", asset_content_type: "image/jpeg", asset_file_size: 5085580, asset_updated_at: "2013-06-21 19:13:57", Mgmt: "abc">] 

是否可以根据user_id: 2创建具有唯一值的新Hash,因为当前2个元素的user_id相同,即2,我只想在哈希中使用一次,我该怎么办?

2 个答案:

答案 0 :(得分:2)

以下示例为您提供良好的开端:

h = [ { a: 2, b: 3}, { a: 2, c: 3 } ]
h.uniq { |i| i[:a] }
# => [{:a=>2, :b=>3}]

答案 1 :(得分:2)

似乎是has_many模型与User模型之间的Estate关系,对吧?如果我理解正确,那么事实上您需要将Estate分组为user_id

的PostgreSQL:

 Estate.select('DISTINCT ON (user_id) *').all

MySQL的:

 Estate.group(:user_id).all

P.S。我不建议从数据库中选择所有记录,然后使用Ruby处理它们,因为数据库以更有效的方式处理数据操作。

相关问题