2013-06-21 15 views
1

У меня есть Hash @estate:Получить уникальное содержание от Руби Hash

[#<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">] 

Можно ли сделать новый Hash с уникальными значениями в соответствии с user_id: 2, потому что в настоящее время 2 элементы имеют user_id же то есть 2, I просто хочу, чтобы он один раз попал в хэш, что мне делать?

+0

Я вижу идентификатор недвижимости и идентификатор пользователя как два, где есть дубликат? –

+2

По-видимому, вывод @estate - это объект 'Array', а не' Hash'. –

+1

OK Я вижу два активных экземпляра для Estate, у одного есть идентификатор недвижимости 1, другой идентификатор недвижимости 2. У каждого из них есть 'user_id' из 2. Именно то, что вы хотите сделать с ними? Они являются отдельными записями Estate с одинаковым идентификатором пользователя. «Я просто хочу, чтобы это раз в хеше» мне непонятно. – lurker

ответ

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, поскольку базы данных обрабатывают операции с данными гораздо более эффективным способом.

+0

спасибо !!! ваше решение работало для меня хорошо !!! Я использую MySql –

+0

рад помочь :) – trushkevich

2

Вот образец пример, чтобы получить вам хороший старт:

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

работает отлично в консоли rails, но когда я использую его в контроллере, я не знаю, что не так, я также пробовал в режиме отладки, но он не работает –

+0

: P. спасибо за вашу помощь действительно ценю это –