Посмотрел на него еще раз, вспомнил что не понравилось, не было возможности контролировать поддомен по записям в таблице (либо плохо смотрел), да и синтаксис хотелось более наглядный.
Хорошо, допустим вносить нельзя. Тогда как разрулить такое:
— нужно 2 поддомена статичных (например admin и api)
— нужно X поддоменов, соответствующих например городу, пользователи соответственно как удаляются так и появляются переодически
Пока не могу придумать как обойтись без обращения к модели.
И не совсем понятно почему сюда нельзя внести модель. Да это контроллер, но всегда считал что контроллеру как раз и разрешено оперировать с моделями напрямую.
PS: ИМХО MVC не священная корова, если нельзя но очень нужно, то аккуратно можно.
Иисус! извините конечно, но этот код не читаем и местами не работает
хотябы:
case — when при работе с класами ведет себя как is_a?
было:
@subdomains = case param.class.to_s
when «String», «Symbol»
[param]
when «Array»
param
else
[]
end
стало:
@subdomains = case param
when String, Symbol, Array
param.to_a
else
[]
end
Хотя наверно лучше выкинуть исключение если передан неправильный параметр, а то потом замучаетесь с отладкой (объект создается корректный но не работает)
Вот это вообще не работает:
obj = case @model.class
when String
@model.classify.constantize
when Symbol
@model.to_s.classify.constantize
else
@model
end
должно быть:
obj = case @model
when String, Symbol
@model.to_s.classify.constantize
else
@model
end
Большое спасибо :) Язык в стадии освоения (больше как хобби) и после C++ проскакивают кальки с него. Буду учить глубже.
По поводу не работоспособности, проверял на тестовом приложении. Все моменты отрабатывали, посмотрю тогда внимательней.
Ваше решение, как я понимаю, напрочь лишено главного достоинства, которое есть в вышеуказанном subdomain-fu — url_for(:controller => :user, :action => :home, :subdomain=>@user.login).
Нет, мое решение это продолжение того примера что дан в скринкасте (ссылка в начале топика), а там как раз и url_for описан и остальные моменты, которые нужно настроить. Если это необходимо то могу указать этот момент в статье.
Поддомены в Rails