2011/10/21


<実装(コーディング)し始める前に考えること>
実装をし始める前には、以下の3つのことを行う。

1. データモデル構造の設計
・どのようなモデル(テーブル)が必要か。
・モデル間には関連を持たせるのか。持たせる場合は1対1、1対多、多対多の内のどれなのか。
2. ルーティングの設計
・さまざまなデータ処理を、map.resourcesによって設定される7つのアクション(index,new,edit,show,create,update,destroy)にどのように落とし込むか。
・各データをどこ(どのURL)に送るのか。
3. 画面遷移の設計(2.ルーティングとほぼ同時に進める)
・どのような画面の動きにするとユーザー側は使いやすいか。

<Controller内、各アクションの意味>
scaffoldコマンドなどでモデルを作成した際、controllerファイルにはデフォルトで7つのアクションが書かれてある。それぞれのアクションの意味を自分なりにまとめておく。

1. index
「一覧画面」表示用のアクション。モデルからデータを取り出し、それらを一覧表示する。
2. new
「データ新規作成画面」表示用のアクション。モデルから新たなオブジェクトを生成し(この段階ではデータの値は全てnil)、フォームを表示する。
3. edit
「データ編集画面」表示用のアクション。データidを基にそのデータレコードをモデルから探し出し、フォーム形式でデータを表示する。
4. show
「データ詳細画面」表示用のアクション。データidを基に、そのデータレコードをモデルから探し出し、データを表示する。
5. create
データ生成用のアクション。フォーム(new画面)に入力された値を含むパラメータをフォームから受け取り、データを生成(save)する(レコードをテーブルに追加する)。
6. update
データ変更用のアクション。フォーム(edit画面)に入力された値を含むパラメータをフォームから受け取り、変更があった場合のみデータを変更(update)する(レコード数は変化なし)。
7. destroy
データ消去用のアクション。データidを基に、そのデータレコードをモデルから探し出し、データを消去する。

ちなみに、これら7つのアクションは、CRUD的にはCreate(5.create)、Read(1.index, 2.new, 3.edit, 4.show)、Update(6.update)、Delete(7.destroy)に分けられると思う。

<newとbuildの違い>
newもbuildも新たなオブジェクトをモデルから生成することに違いはない。ただし、親を持つモデル(他のモデルに属しているモデル)において新たなオブジェクトを生成する際は、buildを使うのがよい。例えば、blogモデルに属すcommentモデルにおいて新たなオブジェクト(コメント)を作りたい場合などが考えられる。


Remove all ads