У меня есть веб-приложение MVC (Ruby, Rack, Apache), и я хочу, чтобы оно было спокойным. У меня есть диспетчер, который получит входящий URI и вызовет соответствующий контроллер. На мой взгляд, контроллер должен обрабатывать все действия, связанные с одной моделью, я ошибаюсь? В чем я не уверен, так это в следующем случае:
Если у пользователя есть несколько элементов, как я могу получить определенный элемент, используя URI /user/user_id/item/item_id, я имею в виду, это что-то, что должно обрабатываться в UserController, или мне нужно создать еще один контроллер "кросс-классов" например, UserItemController, который должен заботиться об этом короле? Надеюсь, я ясно выразился :-) Большое спасибо, Люк.
Ответ 1 · рейтинг 2 · marcgg
Организация ваших методов в контроллерах или моделях не имеет ничего общего с тем, будет ли ваше приложение спокойным или нет. В идеале попробуйте сопоставить 1 контроллер с 1 моделью, но вы можете выделить контроллер для действия (например, login).
Вам нужно посмотреть на файл routes.rb. Здесь вы будете отображать ресурсы и так далее.
map.connect ':controller/:action/:id'
Я рекомендую прочитать прекрасную статью Райана Томайко об REST
Ответ 2 · djna
Сколько кода будет в контроллере? Какие у них будут зависимости? Сколько вам нужно будет перестроить, если эти зависимости изменятся? Можете ли вы представить разделение обязанностей в команде проекта - одни люди работают с пользователями, другие - с элементами?
Я склоняюсь к тому, чтобы количество контроллеров было небольшим, поэтому я бы разделил их только для обеспечения параллельной разработки или если вы обнаружите, что какая-то часть "пространства URL", кажется, живет своей собственной жизнью, много оттока, в то время как остальные стабильно.
Я думаю, что вы можете принять позднее решение о детализации контроллера, рефакторинг, если вы обнаружите, что это необходимо для повышения детализации.