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