web-dev-qa-db-ja.com

Ruby on Rails)のMVCとは何ですか?

誰かがMVCをRuby on Rails、素人の言葉で説明してくれませんか。私はMVCのモデルを理解することに特に興味があります(モデルに頭を悩ませることはできません)。

23
Imran

背景には、MVCは(複合)デザインパターンであり、1979年にTrygve Reenskaug(Smalltalk)によって開発されました。

True MVCは、主にn層(非Web)システムでの使用が計画されており、システムをモデル、ビュー、コントローラーの3つの異なる部分に分割します。

モデル

  • アプリケーションのデータが含まれています(多くの場合、データベースにリンクされています)
  • アプリケーションの状態が含まれています(例:顧客の注文内容)
  • すべてのビジネスロジックが含まれています
  • 状態変化のビューに通知します(** RORには当てはまりません、以下を参照)
  • ユーザーインターフェイスの知識がないため、再利用できます

景色

  • ユーザーにデータを提示するユーザーインターフェイスを生成します
  • パッシブ、つまり処理を行いません
  • データがユーザーに表示されると、ビュー作業が実行されます。
  • 多くのビューは、さまざまな理由で同じモデルにアクセスできます

コントローラー

  • 外の世界からイベントを受け取る(通常はビューを介して)
  • モデルと対話する
  • 適切なビューをユーザーに表示します

**クラシックMVCは、モデルがすべての変更をオブザーバー方式でビューに送信できないため、Webアプリケーションには適していません(ビューはWebページです)。 Model2は、90年代にJSPチームによって変化するインフラストラクチャを克服するために導入されました。 MVC Webフレームワークは実際にはMVCではなく、Model2です(これはRailsのRuby)に当てはまります)。

これは、マスター、Martin FowlerのMVCを含むGUIパターンの説明です GUIアーキテクチャ

私がこれまでに見つけた最高の本は Railsを使ったアジャイルWeb開発 です。それは知識がないと仮定することから始まり、非常に包括的です。

これがあなたにいくつかの光を当てるのに役立つことを願っています!

47
MGrev

enter image description here

MVCは基本的にModel-View-Controllerを示します。そして、PHP、Perl、Pythonなどの多くの言語で使用されるMVC。通常、MVCは次のように機能します。

リクエストは最初にコントローラーに届き、コントローラーは適切なビューを見つけてモデルと対話し、モデルはデータベースと対話して応答をコントローラーに送信し、次に応答に基づいてコントローラーが出力パラメーターを表示します。

4
Anjan

モデルは、プログラムが使用するデータ構造です。

ビューは、画面または次のレベルと相互作用する部分です。

コントローラは通常、モデルとビューの間でデータを処理します

MVC構造はネストされることが多いため、「モデル」または「ビュー」には独自のMVCが含まれる場合があります(画面上のコンポーネントを考えてください。文字列で埋めるだけで、舞台裏でコンポーネントのコードが独自のMVCを描画します。小さなビュー、独自の小さなモデル(渡した文字列)、ビューにデータを描画する小さなコントローラーがあります。

Railsでは、モデル、ビュー、コントローラーの役割はフレームワークによって明確に定義されています。チュートリアルでは、作成されたファイルについて3つのコンポーネントを紹介します。

他のシステムでは、これらの部分を識別するのが難しい場合があります。また、MVCは「完璧」ではありません。有効な代替手段があることを覚えておいてください。ただし、整理を開始するための良い方法です。

3
Bill K

MVCに頭を巻き付ける最善の方法は、例によると思います。シンプルなコードを試してみてくださいRails MVCを使用したアプリ。 「Getting Started with Rails」のブログの例 など、オンラインのチュートリアルはたくさんあります。

例をコーディングすることで学ぶことを選択した場合は、答えを確認してください MVCの明確な例はどこにありますか?

1
Pete

Ruby on RailsはMVCデザインパターンを実装していません。Ruby on Railsには、コントローラー、モデル、ビューと呼ばれるフォルダーがあります。viewsフォルダーにはHTMLファイルがあります。controllersandmodelsフォルダーにはRubyファイルがあります。コントローラーはURLにマップされ、コントローラー内のメソッドは、そのURL、関連するビュー(HTML file)が読み込まれ、そのモデル(データ構造)を使用してビューにデータが入力されます。これは、MVCデザインパターンに似ている程度です。MVCであると言われるのは残念です。これは、混乱と誤解を生む原因となっているためです。 MVCデザインパターン。

Railsでは、モデルはデータ構造です。

1
Joey Guerra

モデルビューコントローラーの原則は、アプリケーションの作業を3つの別個の、しかし密接に連携しているサブシステムに分割します。

モデル(ActiveRecord):

オブジェクトとデータベース間の関係を維持し、検証、関連付け、トランザクションなどを処理します。

このサブシステムはActiveRecordライブラリに実装されており、リレーショナルデータベースのテーブルとデータベースレコードを操作するRubyプログラムコード。Rubyメソッド名は、データベーステーブルのフィールド名から自動的に生成されます。

ビュー(ActionView):

これは、データを提示するというコントローラーの決定によってトリガーされる、特定の形式でのデータの提示です。これらは、JSP、ASP、PHPなどのスクリプトベースのテンプレートシステムであり、AJAXテクノロジーとの統合が非常に簡単です。

このサブシステムは、データプレゼンテーション用のプレゼンテーションテンプレートを定義するための組み込みRuby(ERb)ベースのシステムであるActionViewライブラリに実装されています。Railsアプリケーションを実行すると、ビューが表示されます。

コントローラー(ActionController):

トラフィックを転送するアプリケーション内の機能。モデルに特定のデータを照会し、そのデータを特定のビューのニーズに合う形式に編成します(検索、並べ替え、メッセージング)。

このサブシステムは、ActiveRecord(データベースインターフェイス)とActionView(プレゼンテーションエンジン)の間にあるデータブローカーであるActionControllerに実装されています。

Railsのmvcを明確に理解するには、以下のリンクを確認してください。

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 。これは主に、モデル(データベーステーブルのクラスバージョン)を担当するコード、ビュー(ユーザーに視覚的に表示されるもの)を担当するコード、およびコードを整理するための単なる方法です。コントローラ(ビューをモデルに結び付け、ロジックの大部分を実行するもの)を担当します。

これは、フレームワーク固有ではない説明です。 MVCを使用するフレームワークごとに、実装方法が異なります。 Ruby on Railsの場合、各モデルは、データベーステーブルを、SQLを記述する必要なく他のオブジェクトとコードで直接通信できるクラスとして表します。すべてのSQLはバックグラウンドで処理されており、通常のクラスであるかのように考える必要があります(ほとんどの場合、シームレスではありません)。ビューはほとんどがHTMLであり、ブラウザに送信される内容を表します。コントローラモデルとビューを一緒に通信するコードです。

全体として、MVCはRailsのRuby)だけに固有のものではありません...これが最も人気があります。

1
Adam

MVCパターンがどのように機能するかについての概要を以下に示します。

コントローラー:

  1. ある種のインタラクション/イベントストリームをリッスンします。
  2. コントローラは、そのタイプのインタラクション/イベントをモデルに送信できます。
  3. コントローラーはビューと通信することもできます。

モデル:

  1. モデルは、コントローラーからのインタラクション/イベントをリッスンします。
  2. データソースの抽象化です。
  3. データロジックと操作を処理します。
  4. ロジックで処理した後、ビューと通信するコントローラーに送信します。

ビュー:

  1. Viewはコントローラーと通信できます。
  2. モデルからブラウザにデータを視覚的にレンダリングする方法を知っています。
  3. コントローラは、モデルからの何かで何かをするようにビューに指示します。

注意すべき点がいくつかあります。モデルはビューと直接通信できず、その逆も同様です。コントローラーのみがビューとモデルと通信できるため、コントローラーは、ブラウザーでのユーザーの操作から取得された操作/イベントのデリゲーターとして機能します。

より明確な理解のためにこのリンクをチェックしてください

明確にするためにもう1つのリンク

0
Tony Tai Nguyen