Поскольку у вас есть возможность изменить схему, вам следует. Хранение массива в виде отдельных столбцов в таблице денормализовано . Нормализуется ли ваша схема или нет, но ваша текущая сложность является прямым результатом денормализованной схемы.
Что вам нужно сделать, это создать новую таблицу, стопки, вот так. Я буду использовать синтаксис postgres, так как это то, что я знаю. Я не знаю имя таблицы, которая в настоящее время содержит все столбцы стопок *, поэтому я назову ее "foo":
create table piles (
id serial primary key,
foo_id int not null references foo(id),
value text not null,
);
Каждый столбец, который у вас есть в foo, существует вместо этого как ряд в кучах. В модель для свай добавьте:
belongs_to: foo
и в модель для foo добавьте:
has_many: piles
В вашем контроллере, когда у вас есть foo в руке, вы можете получить доступ к его стопкам с помощью foo.piles