2015-11-25 4 views
0

Я пытаюсь найти определенное значение внутри array. array состоит из данных в базе данных MySQL и выглядит следующим образом:Поиск определенного значения из массива (RoR/MySQL)

info = [#<Info1: bla, Info2: blo>,#<Info1: bli, Info2, Ble>] 

Теперь я хочу, чтобы каждое значение Info1 «s от него, но я не знаю, как.

array была образована путем вызова

info = Info.find(:all) 

Может кто-нибудь мне помочь?

Я использую Rails 2.2.2 (не спрашивайте, ничего не могу с этим поделать) и Ruby 1.8.

Edit: Подробнее

информация представляет собой базу данных, где Info1 и информация 2 являются столбцами. Вызов с помощью info = Info.find (: all) возвращает массив выше.

То, что я пробовал до сих пор, связано с попыткой пройти через массив с каждым, но пока не повезло.

Большинство из того, что я пытался как

a.grep(/^info1/) 

и

info.select(|i| i.name == "info1") 

все возвращать пустые массивы

Редактировать

Nevermind, я нашел ответ. Я думал слишком странно. Ответ

info.each do |object| 
puts object.info2 
end 

ответ

0

Каковы ваши критерии отбора? Вы можете сделать что-то вроде

info.select{|i| i.name == 'hello' } 

и вы получите все объекты Info с именем = 'hello'.

Но я бы предпочел изменить запрос, если можно, для фильтрации их в запросе базы данных напрямую.

+0

Я попробовал и возвратил мне пустой хэш. Изменение его в запросе базы данных на самом деле не является вариантом здесь, это назначение, и я на самом деле прав, где мне нужно быть, я просто не могу продолжать. – Uhraya

+0

Если информация является массивом, вы не можете иметь хэш назад, так как 'select' возвращает массив. Возможно, у вас есть пустой массив. Можете ли вы добавить дополнительную информацию в вопрос об атрибутах «Info» и вашем фильтре? Также записывать то, что вы пробовали, поможет – coorasse

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