Общие правила определения моделей / контроллеров, необходимых при создании приложения Rails

Я новичок в Rails. Я посмотрел на различные учебники и книги. Одна общая вещь состоит в том, что они учат вас различным аспектам Rails, следуя пошаговому руководству по созданию простого приложения. Это хорошо, так как показывает, как делать вещи. Тем не менее, меня больше интересует следующий вопрос - если я знаю, каким должно быть мое приложение с точки зрения возможностей и что оно делает, как мне определить, какие модели / контроллеры мне нужны? Я имею в виду, что в большинстве уроков вам говорят, например, построить модель пользователей, модель постов и модель комментариев (если это приложение для блога), но как мне заранее знать, что мне нужны эти модели? Существуют ли какие-либо общие правила, когда единица приложения должна стать моделью, а не просто сохранять ее частью уже существующей модели?

Краткий пример: я хочу создать корпоративное приложение для голосования, в котором каждому пользователю может быть назначен один или несколько акционеров, и я участвую в общих собраниях, где каждое собрание содержит несколько пунктов повестки дня, по которым они могут голосовать. Хорошо, ясно, что мне нужна модель / контроллер пользователя, может быть модель акционеров, модель собраний и модель вопросов, но как мне выяснить, нужны ли мне какие-либо другие модели?

3 ответа

Решение

Быстрый ответ заключается в том, что нет общих правил для этого.

Всегда полезно сесть с ручкой и бумагой и набросать приложение со всеми объектами и всеми функциями. Тогда вы увидите, какие объекты вам нужны.

Вы говорите, что вы явно пользовательская модель / контроллер. Я согласен, но, возможно, акционер просто является атрибутом модели User.

Например, голосование может быть объектом с его собственной моделью. Если вы хотите отслеживать голоса пунктов повестки дня и то, за что проголосовал пользователь.

модель голосования может быть что-то вроде этого

class Vote
  belongs_to :user
  belongs_to :item
end

Добавляйте только необходимые действия контроллера. Модель голосования может не нуждаться в контроллере. Но, возможно, вы хотите добавить некоторые функции, где вам нужен контроллер, например, страницы статистики.

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

Для этого, я думаю, вы знаете дизайн вашей базы данных и какие таблицы потребуются для создания приложения. Вам нужно создать модели для каждой таблицы. А что касается функциональных возможностей и функций, вам необходимо создавать контроллеры и действия. Но при запуске сложно создать все контроллеры для приложения. Как только вы запустите приложение, вы получите представление о контроллере и действии, которое будет использоваться для следующей функции. Точно так же, как создание встречи, вам нужен контроллер Meetings.

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

Другие вопросы по тегам