it-swarm.com.ru

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

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

22
Imran

По некоторым сведениям, 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 . Он начинается с предположения об отсутствии знаний и является достаточно полным.

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

46
MGrev

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

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

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

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

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

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

3
Bill K

enter image description here

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

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

2
Anjan

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

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

1
Pete

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

Модель (ActiveRecord):

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

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

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

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

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

Controller (ActionController):

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

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

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

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

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

1
vinoth

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

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

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

1
Adam

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

Контроллер: 

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

Модель:

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

Посмотреть:

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

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

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

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

0
Tony Tai Nguyen

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

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

0
Joey Guerra