У меня есть Ruby проект на Rails, где у меня есть модель, которая принимает вложенные атрибуты для другой модели. Я не получаю ввод JSON из стандартной формы, но вместо этого из библиотеки, которая имеет заданный c формат.
Скажем, моя база данных выглядит так:
user columns: id, name, country
user_setting columns: key, value, user_id
Входные данные, которые я получаю, выглядят так:
{
name: "name",
country: "country",
settings: {
edit: true,
autosave: false
}
}
Я могу получить доступ к настройкам как к вложенным атрибутам, выполнив что-то вроде этого:
alias_attribute :settings, :settings_attributes
Но теперь проблема в том, что поле настроек читается как массив типа ["edit", "true"]
, который не может быть сохранен в базе данных.
Есть ли способ настроить модель на прием этого ввода и интерпретировать ключ как столбец key
и значение как столбец value
?
Я рассмотрел вопрос о реструктуризации всего ввода, чтобы он соответствовал ожиданиям Rails, но это выглядит как дополнительная работа (для меня и сервера) и немного грязно.