Что такое MVC в Ruby on Rails? - PullRequest
       82

Что такое MVC в Ruby on Rails?

22 голосов
/ 19 декабря 2009

Может кто-нибудь объяснить мне MVC в Ruby on Rails, в терминах непрофессионала. Я особенно заинтересован в понимании модели в MVC (не могу разобраться с моделью).

Ответы [ 8 ]

46 голосов
/ 22 декабря 2009

По некоторым сведениям, MVC - это (составной) шаблон проектирования, разработанный в 1979 году Тригве Реенскаугом (Smalltalk).

True MVC изначально планировалось для использования в n-уровневых (не веб-) системах, и оно разделяет систему на 3 отдельные части: модель, представление и контроллер

Модель

  • Содержит данные для приложения (часто связанные с базой данных)
  • Содержит состояние приложения (например, какие заказы есть у клиента)
  • Содержит всю бизнес-логику
  • Уведомляет об изменении состояния (** не относится к ROR, см. Ниже)
  • Нет знаний о пользовательских интерфейсах, поэтому его можно использовать повторно

Вид

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

Контроллер

  • Получать события из внешнего мира (обычно через представления)
  • Взаимодействовать с моделью
  • Отображает соответствующий вид для пользователя

** Классический MVC не подходит для веб-приложений, так как модель не может отправить все изменения в представление в режиме наблюдателя (представление является веб-страницей). Model2 была представлена ​​для преодоления изменяющейся инфраструктуры командой JSP в 90-х годах. Web-фреймворки MVC на самом деле не MVC, а Model2 (это верно для Ruby on Rails).

Вот описание шаблонов GUI, включая MVC от мастера Мартина Фаулера GUI Архитектура

Лучшая книга, которую я нашел на данный момент, это Agile Web Development с Rails . Оно начинается с предположения об отсутствии знаний и является достаточно полным.

Надеюсь, это поможет пролить свет на вас!

3 голосов
/ 19 декабря 2009

Ваша модель - это структура данных, которую использует ваша программа.

Вид - это часть, которая взаимодействует с экраном или на следующий уровень вверх.

Контроллер обычно обрабатывает данные между моделью и представлением

Структуры MVC часто являются вложенными, поэтому «Модель» или «Вид» могут содержать свой собственный MVC (Подумайте о компоненте на экране. Вы можете просто заполнить его строкой, но за кулисами код компонента рисует свой маленький вид, имеет свою собственную маленькую модель (передаваемую строку) и имеет маленький контроллер, рисующий данные в вид.

В Rails роли модели, представления и контроллера четко определены средой, в любом учебном пособии будут выделены три компонента, когда он проведет вас по созданным файлам.

В других системах эти части может быть сложнее идентифицировать. Кроме того, MVC не является «идеальным», просто имейте в виду, что есть допустимые альтернативы, но это хороший способ начать организацию.

2 голосов
/ 18 июня 2015

enter image description here

MVC в основном обозначает Model-View-Controller. И MVC используется многими языками, такими как PHP, Perl, Python и т. Д. Обычно MVC работает так:

Сначала запрос поступает к контроллеру, контроллер находит и соответствующий вид и взаимодействует с моделью, модель взаимодействует с вашей базой данных и отправляет ответ контроллеру, а затем контроллер на основе ответа дает выходной параметр для просмотра.

1 голос
/ 29 июня 2017

Принцип Model View Controller делит работу приложения на 3 отдельные, но тесно взаимодействующие подсистемы.

Модель (ActiveRecord):

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

Эта подсистема реализована в библиотеке ActiveRecord, которая обеспечивает интерфейс и связывание между таблицами в реляционной базе данных и программным кодом Ruby, который управляет записями базы данных. Имена методов Ruby автоматически генерируются из имен полей таблиц базы данных.

Просмотр (ActionView):

Это представление данных в определенном формате, инициируемое решением контроллера о представлении данных. Это основанные на сценариях системы шаблонов, такие как JSP, ASP, PHP, и их очень легко интегрировать с технологией AJAX.

Эта подсистема реализована в библиотеке ActionView, которая является системой на основе Embedded Ruby (ERb) для определения шаблонов представления для представления данных. Каждое веб-соединение с приложением Rails приводит к отображению представления.

Контроллер (ActionController):

Средство в приложении, которое направляет трафик, с одной стороны, запрашивая модели для конкретных данных, а с другой стороны, организуя эти данные (поиск, сортировка, обмен сообщениями) в форму, которая соответствует потребностям данный вид.

Эта подсистема реализована в ActionController, который является брокером данных, расположенным между ActiveRecord (интерфейс базы данных) и ActionView (механизм представления).

Проверьте ссылки ниже для четкого понимания MVC в рельсах:

http://www.bogotobogo.com/RubyOnRails/RubyOnRails_Model_View_Controller_MVC.php

https://betterexplained.com/articles/intermediate-rails-understanding-models-views-and-controllers/

1 голос
/ 19 декабря 2009

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

Это описание не для фреймворка. Каждый фреймворк, использующий MVC, имеет свой способ его реализации. Для Ruby on Rails каждая модель представляет таблицу базы данных как класс, который может напрямую взаимодействовать в коде с другими объектами без необходимости написания SQL. Весь SQL обрабатывается в фоновом режиме, и вы просто должны думать о нем, как будто это нормальный класс (ну, почти, он еще не является бесшовным). Представление в основном HTML и представляет то, что будет отправлено в браузер. Контроллер - это всего лишь код, который связывает модели и представления вместе.

В общем, MVC не относится только к Ruby on Rails ... это просто самый популярный.

1 голос
/ 19 декабря 2009

Я думаю, что лучший способ обернуть голову вокруг MVC - это пример. Попробуйте написать простое приложение на Rails, используя MVC. В Интернете есть множество учебных пособий, таких как пример блога в разделе "Начало работы с Rails" .

Если вы решили учиться путем написания примера, ознакомьтесь с ответами на Где найти четкие примеры MVC?

0 голосов
/ 13 февраля 2016

Вот краткий обзор высокого уровня о том, как работает шаблон MVC:

Контроллер:

  1. Слушает какой-то поток взаимодействия / событий.
  2. Контроллер может отправить модель этого типа взаимодействия / события.
  3. Контроллер также может связываться с представлением.

Модель:

  1. Модели будут прослушивать взаимодействие / событие с контроллера.
  2. Абстракция источника данных.
  3. Обрабатывает логику данных и манипуляции.
  4. После того, как это сделано с помощью логики, оно затем отправляет контроллеру, который затем связывается с представлением.

Вид:

  1. View может связываться с контроллером.
  2. Умеет визуально визуализировать данные из модели в браузер.
  3. Контроллер приказывает View сделать что-то с Модель.

Следует отметить, что модели не могут напрямую взаимодействовать с представлениями, и наоборот. Только контроллер может взаимодействовать с представлением и моделью, поэтому контроллер выступает в качестве делегатора для взаимодействия / события, полученного из взаимодействия пользователей в браузере.

проверьте эту ссылку для более ясного понимания

еще одна ссылка, чтобы очистить

0 голосов
/ 10 мая 2014

Ruby on Rails не реализует шаблон проектирования MVC. В Ruby on Rails есть папки, называемые контроллерами, моделями и представлениями. Папка views содержит файлы HTML. В папке контроллеров и моделей есть файлы ruby. Контроллеры сопоставляются с URL-адресом, и метод в контроллере выполняется при запросе этого URL-адреса, загружается связанное представление (файл HTML) и модель (структура данных) для него используется для заполнения представления. Это степень его сходства с шаблоном проектирования MVC. Жаль, что люди говорят, что это MVC, потому что это вызвало смятение и неправильное понимание шаблона проектирования MVC.

В Rails модель представляет собой структуру данных.

...