2010-06-24 2 views
1

У меня есть два запроса сложных рельсов (AR), исходящие из двух разных методов, которые я иногда хочу объединить. Структура данных, возвращаемая в каждом объекте, такая же, я просто хочу добавить один на другой.ruby ​​on rails, объединяющий два объекта активных записей

Вот упрощенный пример (не мой фактический код):

@peep1 = Person.find(1) 

@peep2 = Person.find(2) 

Мысль что-то, как это будет работать:

@peeps = @peep1 << @peep2 

или это

@peeps = @peep1 + @peep2 

выше, является просто упрощенный пример - объединение запросов и т. д. в моем случае не будет работать.

Редактировать: Возможно, конкатенация - неправильный термин.

Вот результат я хотел бы:

Say @ peep1 имеет:
first_name: Боб
last_name: Smith

и @ peep2 имеет:
first_name: Джо
last_name: Johnson

Я хочу, чтобы они были объединены в третий объект. Так что, если я перебирать @peeps он будет содержать данные из обоих предыдущих объектов:

@peeps имеет:
first_name: Боб
last_name: Smith
first_name: Джо
last_name: Джонсон

Спасибо !

+0

просьба представить более подробный пример, потому что я не понимаю, что вы имеете в виду конкатенации объектов. Я знаю, что это означает для строк: '" a "+" b "' => '" ab "', но каков должен быть результат Object (Person)? – jigfox

+0

Редактировать выше. Может быть, конкатенация - неправильный термин. – djburdick

ответ

6

Откровенно говоря, ничего, что вы описываете, не имеет смысла :)

@peep1 и @peep2 каждый представляет собой единый объект - одну строку в базе данных.

Нет смысла, чтобы они могли быть сфокусированы.

Вы можете создать массив из них обоих.

@all_peeps = [@peep1, @peep2] 

И затем повторите это.

@all_peeps.each do |peep| 
    print peep.first_name 
end 
+0

«Ничто из того, что вы описываете, не имеет никакого смысла» - предположите, что вы читали мой разум тогда :). благодаря – djburdick

1

Это работает для меня:

> @loop_feed = @job.bids.all 
> @bidadd = [] 
> @loop_feed.each do |loop_feed| 
> compare_id = loop_feed.user_id 
>  @user_search.each do |user| 
>  if compare_id == user.id 
>   @bidadd = [@bidadd, loop_feed].flatten 
>  end 
>  end 
> end 
Смежные вопросы