Это должно быть легко. Я точно не знаю, как назвать этот вопрос. У меня есть набор модулей, которые могут быть добавлены в мою CMS (страница, ссылка, форма ...), все они связаны через полиморфную связь с одной таблицей, которая управляет обычными вещами, такими как родословная, и включены ли они и т. Д. Поскольку я делаю «страницу», например, я обрабатываю создание этой другой записи таблицы автоматически. Все, что мне нужно передать, это parent_id. Чтобы сделать это, я создал прокси-сервер с помощью модели страницы:Как сохранить идентификатор в классе модели
def parent_id=(parent_id)
@parent_id = parent_id.blank? ? nil : parent_id.to_i
component_instance.parent_id = @parent_id
end
def parent_id
@parent_id ||= component_instance.parent_id
end
component_instance является полиморфной ассоциацией.
Вы можете видеть, что, когда parent_id установлен на странице, я делаю какую-то магическую проверку, чтобы убедиться, что она пустая, и если да, установите значение @parent_id равным nil, иначе я превращу ее в целое число, а затем назначьте его компоненту_инсталляции, который будет применять его по мере необходимости, когда вся сборка page/component_instance будет сохранена в базе данных.
Мне нужно было сделать blank? nil : parent_id.to_i
, потому что вспомогательный помощник формы ожидает целое число и не работает со строковым значением для id.
Вопрос в том, правильно ли я делаю это, или есть лучший способ превратить идентификатор строки в ниль или целое число в зависимости от того, существует ли оно или нет?
Почему ваш parent_id никогда не будет строкой? Что-то здесь не складывается. – jdl
Потому что он исходит из хэша params. Все в параметрах передается как строка, не так ли? –