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.
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ć