Я столкнулся с небольшой проблемой и не уверен, как ее обойти.
У нас есть ряд полиморфных вложенных ресурсов в нашей модели данных, например:
Назначение>Размещение> Адрес
Пункт назначения> Достопримечательности> Адрес
Таким образом, к контроллеру адресов можно прийти от нескольких родителей.Мне нужно иметь возможность правильно связать их, а также выполнить навигацию по дереву родителей.
Адрес - это та же модель в этих случаях, поэтому мое первое решение для этого было создать вложенные ресурсы в файле маршрутов.Затем мы также начали использовать это вложение, чтобы обеспечить навигацию в виде хлебных крошек, поэтому, когда наши URL-адреса выглядят так:
localhost: 3000 / Destination / 1 / размещения / 3 / address / new
Мы можем разделить его и использовать для перехода назад по пути к любому уровню.
Я также, чтобы сделать контроллер универсальным, я использую вложенные ресурсы, чтобы выяснить, каков родительский ресурс для карты, поэтомуконтроллер выглядит так:
def new
@parent = find_parent_model
if !@parent.nil?
@destination = @parent.destinations.new
[...]
def find_parent
params.each do |name, value|
if name =~ /(.+)_id$/
return $1.classify.constantize.find(value)
end
end
nil
end
Это работает.Но проблема в том, что у нас есть 1800 строк вложенных ресурсов в файле rout.rb, и теперь для запуска приложения rails требуется около 5 минут, и оно находится там, используя 500 МБ ОЗУ.: S
Кто-нибудь знает менее безумный способ сделать это?