我有一个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,我只想在哈希中使用一次,我该怎么办?
答案 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处理它们,因为数据库以更有效的方式处理数据操作。