2014-02-10 4 views
-1

Пусть я запуская ActiveRecord заявление и результирующий массив хэша содержит следующиеУстройте уникальные содержимое хэш в соответствии с там вхождениями

я извиняюсь за туманный вопрос без предоставления надлежащей информации

быть точными после запуска Item.joins (: item_categories) .где (: item_categories => {: category_id => i.id})

я получаю следующее

[#<Item id: 1, name: "Bat", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 1, name: "Bat", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 1, name: "Bat", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 2, name: "Base", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 2, name: "Base", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 2, name: "Base", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 3, name: "Glove", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 3, name: "Glove", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 3, name: "Glove", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 4, name: "Ball", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 4, name: "Ball", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 4, name: "Ball", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 5, name: "Catchers Mitt", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 5, name: "Catchers Mitt", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 5, name: "Catchers Mitt", created_at: "2014-02-10 00:28:43", updated_at: "2014-02-10 00:28:43">, 
#<Item id: 6, name: "Batting Glove", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 6, name: "Batting Glove", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 6, name: "Batting Glove", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 7, name: "Batting Helmet", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 7, name: "Batting Helmet", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 7, name: "Batting Helmet", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 8, name: "Baseball Cap", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 8, name: "Baseball Cap", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 8, name: "Baseball Cap", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 9, name: "Gear Cycle", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 9, name: "Gear Cycle", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 10, name: "Non Gear Cycle", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 10, name: "Non Gear Cycle", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 11, name: "Mountain Bike", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 11, name: "Mountain Bike", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 12, name: "Uni-cycle", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">, 
#<Item id: 12, name: "Uni-cycle", created_at: "2014-02-10 00:28:44", updated_at: "2014-02-10 00:28:44">] 

В этом случае я не только хочу, чтобы выход был уникальным, но и хеши должны быть расположены в соответствии с вхождением в них. Идентификатор объекта:

Есть ли какой-либо метод для этого ?, мне нужно работать с моим activerecord query или мне нужно написать метод для этого?

ответ

0

Предполагая, что вы имели в виду, чтобы показать массив хэшей, а не хэши с повторяющимися ключами, вы можете использовать Array#uniq с блоком указать критерии уникальности:

array = [ 
    { a: 1, b: 2 }, 
    { a: 1, b: 3 }, 
    { a: 2, b: 1 }, 
    { a: 2, c: 4 } 
] 

array.uniq {|hash| hash[:a] } 
#=> [{ a: 1, b: 2 }, { a: 2, b: 1 }] 
+0

Я редактировал вопрос и предоставил больше информации, чтобы понять вопрос –

0

хэши не могут иметь дубликаты ключей, так Нет, это невозможно. Обратитесь к документации по http://www.ruby-doc.org/core-2.1.0/Hash.html

«Хеш словарь-подобный набор уникальных ключей и их значения.»

+0

Я отредактировал вопрос и предоставил больше информации, чтобы понять квест на –

0

Если вы казнён:

h = {'name' => 'hank', 'name' => 'hank','name' => 'steve', 
    'name' => 'brad', 'name' => 'brad','name' => 'brad' } 

Руби не будет жаловаться. Он установил бы h['name'] к «моток», то он будет делать это снова, то это изменит h['name'] к «стив», а затем установить h['name'] на "Брэда три раза, так что вы в конечном итоге с

h = { 'name' => 'brad' } 

If вы изменили ключи, чтобы они были уникальными, хотел каждое значение только один раз и не волновало, какой ключ/значение пары вы удалили, чтобы достигнуть этого, вот простой способ сделать это:

h = {'name1' => 'hank', 'name2' => 'hank', 'name3' => 'steve', 
    'name4' => 'brad', 'name5' => 'brad', 'name6' => 'brad' } 

h.invert.invert #=> {"name2"=>"hank", "name3"=>"steve", "name6"=>"brad"} 
+0

Я отредактировал вопрос и предоставил дополнительную информацию, чтобы понять вопрос –

Смежные вопросы