Это должно быть легко. Я не уверен точно, как озаглавить вопрос, хотя. У меня есть коллекция модулей, которые могут быть добавлены в мою 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, в противном случае я превращаю его в целое число и затем назначаю это относится к component_instance, который будет применять его по мере необходимости, когда вся комбинация page / component_instance будет сохранена в базе данных.
Мне пришлось сделать blank? nil : parent_id.to_i
, потому что помощник селектора формы ожидает целое число и не работает со строковым значением для идентификатора.
Вопрос в том, правильно ли я это делаю, или есть лучший способ превратить строковый идентификатор в ноль или целое число в зависимости от того, существует он или нет?