質問: ここで説明されている"MVCの本当の姿"というやつなんですが、これをどうやってRuby on Railsで実装するのかがさっぱり想像がつきません。 例えば"Modelの持っている加工メソッド"っていうのはapp/models/***.rbに記述するの?とか、どうやってViewからModelの状態をみて何を元に出力するの?とかなどなどです。 もうとにかく全く想像が出来ていないので、ざっくり教えて頂けたらと思います。 細かいことや厳密な事はざっくりした理解が出来てから別途質問させて頂こうと思っています。 ご回答よろしくお願い致します。
回答: > > "Modelの持っている加工メソッド"っていうのはapp/models/***.rbに記述するの? > > > Yesです。Railsで言うMVCのModelに相当するものは、app/models の中に配置されている各Modelクラスが担当することになります。RoRの場合は、このModelクラスがActiveRecordによるO/R Mapperの役割も兼ねているので混乱の元になるのですが、基本的にはこのModelクラスに「Modelの内容を加工する処理を持つメソッド」を追加していきます。その加工処理には、他の依存Modelを生成したり、複数のModelを取得して最適な情報にまとめて返す、なども含まれます。 > > どうやってViewからModelの状態をみて何を元に出力するの? > > > Controllerは、Modelが持つ加工処理や取得処理を呼び出した後、何らかのModelや処理結果を受け取ることになります。それらは通常Controllerのインスタンス変数にセットされますが、セットされたModelは、View、つまりRoRでいうテンプレートファイルから参照することが可能になります。つまり、Viewは業務処理結果を表すModelから画面の描画に必要な情報を引っ張ってきて、HTML内に埋めていきます。この処理のことを「Modelの状態を見て情報を出力する」という言い方をします。