Вся ваша верхняя часть кода может быть заменена 4 строками кода:
@release = Release.find(params[:id])
@release_cycles = @release.cycles.paginate(:page=> params[:page].presence || 1,
:per_page=>5)
@non_ics= params[:releases].present? ? Release.find(params[:releases]).ics :
Ic.active
@non_members = @non_ics - @release.ics
Помимо кода, который можно улучшить, вы загружаете все выпуски в память и разбиваете на страницы набор результатовРубиновое пространство памяти.Что может замедлить ваш процесс, если у вас есть большое количество циклов для каждого выпуска.
Я вычислил пересечение между двумя массивами в последней строке, используя Ruby.Если размер массива большой, я бы использовал для этого SQL.