Create  Edit  Diff  FrontPage  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

Rails' Wiki - AdjusterTutorial-0002 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}
'''今回分実装済みのサンプル:{{attach_anchor(adjuster.zip}}'''

!実装 -1-
このパートは[[小林さんのエントリー|http://www.free-drive.net/web/?p=243]]を、加筆修正した形になっています。
!!作成手順
さて、設計を基に、早速作成していきます。具体的には以下の順番で進めていきます。
#プロジェクト作成
#データベース作成
#モデル作成(User,Schedule,Event)
#マイグレーション定義(User,Schedule,Event)
#マイグレーション実行
#scaffold(User,Event)
#Scheduleのコントローラ作成
#Scheduleのindex.rhtml、コントローラの編集
#日程調整画面を作成?

最後が曖昧になってますがとりあえず行けるところまで行ってみましょう。

!!1.Railsのプロジェクトを作る。(アプリ名は”adjuster”)
プロジェクトを作成します。そういえばアプリケーションの名前を決めていませんでしたね。名前は"adjuster"としましょう。

InstantRailsのメイン画面から”Create New Rails App…”をクリックします。

{{attach_view("instatntrails_009.gif")}}

すると、DOS窓が開きますので、”rails adjuster”と入力して実行します。*2.0も入っている方は"rails _1.2.6_ adjuster"と入力してください。

{{attach_view("instatntrails_010.gif")}}

↓生成されました。

{{attach_view("instatntrails_011.gif")}}

!!2.phpMyAdminで”adjuster_development”のデータベースを作成します。
本当は、テスト用と本番用のデータベースも作成しますが、今回は省略し、開発用のデータベースのみ作成します。

InstatntRailsから、Configure->Databaseを選択します。


{{attach_view("instatntrails_012.gif")}}


ブラウザが起動し、phpMyAdmin画面が開きますので、”新規データベースを作成する”欄に”adjuster_development”と入力して”作成”ボタンをクリックします。


{{attach_view("instatntrails_013.gif")}}


↓できました。

{{attach_view("instatntrails_016.gif")}}
!!3.モデル(user、schedule、event)を作る。

adjusterプロジェクトのディレクトリに移動して、”ruby script/generate model user”と入力して実行します。

{{attach_view("instatntrails_014.gif")}}

↓できました。

{{attach_view("instatntrails_015.gif")}}

同様に、schedule、eventのモデルも作ります。

!!4.userモデルのカラム定義をする。

モデルをgenerateすると、db/migrateディレクトリ下に、"自動ナンバリング"_create_"テーブルネーム".rbファイルが生成されます。

{{attach_view("instatntrails_017.gif")}}

001_create_users.rbを編集して、カラム定義(メソッド?)を追加します。

{{attach_view("instatntrails_018.gif")}}

!!5.db:migrateしてみる。

じゃ、ここで”rake db:migrate”して、DBテーブルを生成してみます。

{{attach_view("instatntrails_019.gif")}}

↓できました。

{{attach_view("instatntrails_020.gif")}}

phpMyAdminで確認してみます・・・おぉ!できてます。

{{attach_view("instatntrails_021.gif")}}


!!4.続けて、scheduleモデルのカラム定義をする。

002_create_schedules.rbを編集して、カラム定義を追加します。

{{attach_view("instatntrails_022.gif")}}


!!5.またdb:migrateする。

“rake db:migrate”して、schedulesテーブルを生成したいと思います。

{{attach_view("instatntrails_023.gif")}}

・・・あれ?何も出ない。なんで?

{{attach_view("instatntrails_024.gif")}}

あ、そうか!さっきのdb:migrateで、空のschedulesとeventsが作られちゃったんだ・・・。まずったぁ。

!!4.db:migrate VERSION=で初期状態に戻す。

ということで、一旦DBを空にすることにしました。

{{attach_view("instatntrails_025.gif")}}

“VERSION=”と書くと、”VERSION=0″と同じ意味なんだそうです。へぇ。

{{attach_view("instatntrails_026.gif")}}

eventモデルのカラム定義もしてしまう。

003_create_events.rbを編集して、カラム定義を追加します。

{{attach_view("instatntrails_027.gif")}}

!!5.こんどこそdb:migrate!

再度、db:migrateにチャレンジです。

{{attach_view("instatntrails_028.gif")}}

おぉ、今度はうまくいきましたね。

{{attach_view("instatntrails_029.gif")}}

!!6.userをscaffold。

“ruby script/generate scaffold user”で、userモデルの足場(scaffold)を作ります。

{{attach_view("instatntrails_030.gif")}}

ところが、引数にコントローラ名を指定しないと、デフォルトだとコントローラが複数形(users)になってしまいます。
気色悪いので(?)、コントローラ名も渡すことにします。

!!6.一旦、script/destroyでチャラにする。

“ruby script/destroy scaffold user”で、scaffoldを消します。

{{attach_view("instatntrails_031.gif")}}

!!6.scaffoldし直し。(Controllerを明示的に渡して。)

“ruby script/generate scaffold user user”で、userモデルの足場(scaffold)を作ります。

{{attach_view("instatntrails_032.gif")}}

eventも同様にscaffoldします。

!!6.user、eventに何件か登録してみる。

ここで、WEBサーバ(Mongrel)を起動します。

{{attach_view("instatntrails_033.gif")}}

ブラウザからscaffoldで作った画面へアクセスし、user、eventにデータを何件か登録してみます。

{{attach_view("instatntrails_034.gif")}}
{{attach_view("instatntrails_035.gif")}}


!!7.scheduleコントローラ生成。(indexイベント?も)

“ruby script/generate controller schedule index”で、コントローラとindexページを生成します。

{{attach_view("instatntrails_036.gif")}}


!!8.scheduleコントローラに、eventモデルからのselect処理を記述。

schedule_controller.rbを開いて、indexメソッドに以下のコードを記述します。

def index
   @events = Event.find(:all)
end

!!8.ビュー”index.rhtml”に、eventリストの一覧表示を記述。

index.rhtmlを開いて、以下のコードを記述します。

<% @events.each do | event | %>
<%= link_to h(event.name), :action=>:event, :id=>event %>
<% end %>

!!8.scheduleにアクセスしてみる。

ためしにschedule/index.rhtmlを表示してみます。

{{attach_view("instatntrails_037.gif")}}

おぉぉ!!出ましたね。
!!9.日程調整画面を作成?
懸案の日程調整画面作成まで到達しましたよ。さっそく実装に・・・・・・ううむ、駄目です。詰まりました。実現したいのは下記の様な画面なのですが・・・

//{{attach_view("schedule_page.png")}}
{{attach_view("schedule_page1.png")}}

このような画面で、今までの情報で予定を入れる、というのは難しい感じがしませんか?
何かが足りないような・・・・。

どうも、このまま実装するのは難しそうです。

実装をここで一旦ストップし、仕切り直して、なぜ詰まってしまったかの検証を行い、再度モデリングをやり直すことにしましょう。

||[[目次|AdjusterTutorial]]||[[前ページへ|AdjusterTutorial-0001]]||[[次ページへ|AdjusterTutorial-0003]]||