Dodanie tymczasowo elementów z jednej kolekcji do drugiej

witam
mam dwie kolekcje grup - groups i groups_biz, kazda ma questions. Jeśli grupa o danej nazwie z groups_biz nie istnieje w groups to chciałbym dodać ją do kolekcji, jeśli już jest to tylko pytania. Mam mniej więcej taki kod, który działa poza tym ze dokonuje on zapisu w bazie i przypisuje pytanie do grupy a ja chciałbym miec to tą sumę tylko dla widoku, nic nie zapisywac

groups_biz.each do |gb| if @groups.select {|g| g.title == gb.title}.blank? @groups << gb else gb.questions.each do |q| @groups.select {|g| g.title == gb.title}[0].questions << q end end end

zapisywanie dzieje się w momencie kiedy dla grupy robisz:

group.questions << q ?

Jeśli tak, to możesz do grupy dodać jakiś wirtualny atrybut np. attr_accessor :selected_groups i go inicjalizować zamiast asocjacji bazodanowej. Alternatywnie, możesz do widoku przekazywać tablicę haszującą group -> questions.

[quote=hubertlepicki]zapisywanie dzieje się w momencie kiedy dla grupy robisz:

group.questions << q ?[/quote]
Też mi się to wydało dziwne, jeszcze się przyjrze.

tzn group.questions ? czy o coś innego Ci chodzi ?

To Ci się pewnie zapisuje dlatego, że masz na tym asocjację i w ten sposób tworzysz nową. Jak tego potrzebujesz tylko do pokazania w widoku, tu chyba rzeczywiście fajnie będzie to dać do hasha i je zmergować

Czyli użyć collect ? Dane te używane są w selekcie multiple w ten sposób, żeby tworzyły się także optgroup

option_groups_from_collection_for_select(@groups, :questions, :title, :id, :title, :id)