контроллер и спокойное приложение

У меня есть веб-приложение MVC (Ruby, Rack, Apache), и я хочу, чтобы оно было спокойным. У меня есть диспетчер, который получит входящий URI и вызовет соответствующий контроллер. На мой взгляд, контроллер должен обрабатывать все действия, связанные с одной моделью, я ошибаюсь? В чем я не уверен, так это в следующем случае:

Если у пользователя есть несколько элементов, как я могу получить определенный элемент, используя URI /user/user_id/item/item_id, я имею в виду, это что-то, что должно обрабатываться в UserController, или мне нужно создать еще один контроллер "кросс-классов" например, UserItemController, который должен заботиться об этом короле? Надеюсь, я ясно выразился :-) Большое спасибо, Люк.


person Luc    schedule 15.12.2009    source источник


Ответы (2)


Организация ваших методов в контроллерах или моделях не имеет ничего общего с тем, будет ли ваше приложение спокойным или нет. В идеале попробуйте сопоставить 1 контроллер с 1 моделью, но вы можете выделить контроллер для действия (например, login).

Вам нужно посмотреть на файл routes.rb. Здесь вы будете отображать ресурсы и так далее.

  map.connect ':controller/:action/:id'

Я рекомендую прочитать прекрасную статью Райана Томайко об REST

person marcgg    schedule 15.12.2009
comment
Это было очень полезно для меня в начале. Кстати, рассмотрите возможность голосования/принятия ответов. Взгляните на этот часто задаваемый вопрос: meta.stackexchange.com/questions/7237/ для получения дополнительной информации о репутации и так далее. - person marcgg; 15.12.2009

Сколько кода будет в контроллере? Какие у них будут зависимости? Сколько вам нужно будет перестроить, если эти зависимости изменятся? Можете ли вы представить разделение обязанностей в команде проекта — одни люди работают с пользователями, другие — с элементами?

Я склоняюсь к тому, чтобы количество контроллеров было небольшим, поэтому я бы разделил их только для обеспечения параллельной разработки или если вы обнаружите, что какая-то часть «пространства URL», кажется, живет своей собственной жизнью, много оттока, в то время как остальные стабильно.

Я думаю, что вы можете принять позднее решение о детализации контроллера, рефакторинг, если вы обнаружите, что это необходимо для повышения детализации.

person djna    schedule 15.12.2009
comment
- не так много зависимостей кода внутри контроллера? Ну, это то, что я пытаюсь выяснить на самом деле - Я думаю, что работа по восстановлению не так важна - Нет разделения ответственности между проектной командой Да, вы правы, я думаю, что это решение может быть принято позже, но в на самом деле я хотел знать, есть ли какие-то передовые методы в этом случае. - использование контроллера для запроса/обновления вещей в нескольких разных моделях... или - использование контроллера для указанной модели, но в этом случае как обрабатывать отношения между моделями? Большое спасибо - person Luc; 15.12.2009