DB定義してURL定義して

吉見和也(Kazuya Yoshimi) 2007-11-17 09:50:54

風邪をひきました。明日はRails勉強会があるんですが、今回も行けなそうです。

もうろうとしながら前回の続き、エディタを起動したところからです。

■db/migrate/002_create_friendships.rbを編集

Friendshipというモデルを作成したときに、このファイルも一緒に生成されています。ここにテーブル定義を書いておけば後でコマンド一つで、テーブルを作成することができます。

  def self.up

    create_table :friendships do |t|

      t.column :user_id, :integer

      t.column :friend_id, :integer

    end

  end

friendships(複数形になってることに注意)テーブルを、id,user_id,friend_idというカラムで作成しますよという記述。idカラムは書かなくても自動でつきます。

■db/migrate/003_create_statuses.rbを編集

同じくStatusというモデルを作ったので対応するテーブルの定義をここに

  def self.up

    create_table :statuses do |t|

      t.column :user_id, :integer

      t.column :desc, :string

      t.column :created_on, :datetime

    end

  end

statusesテーブルが、id,user_id,desc,created_onで作成されます。user_idはusersテーブルの外部キーになります。user_idとしておくことで、簡単にusersテーブルとこのテーブルのデータを関連づけることができます。それとcreated_onというdatetimeのカラムを作っておくと、データが作成された時に自動でその時間を入れてくれます。

■config/routes.rbを編集

Railsでは、基本的に「http://host/controller名/action名」というURLでアクセスします。このルールはconfig/routes.rbに書いてあって、それをカスタマイズすれば自分の好きなURLをつけることができます。

map.connect "", :controller => "user", :action => "home"

http://host/とアクセスされたら、user_controller.rbのhomeアクションを実行します

map.connect ":user", :controller => "user", :action => "show"

ルールのところ文字列に:がついている場合、それは変数とみなされます。つまり、http://host/hogeでもhttp://host/fugaでもこのルールが実行されます。

このroutes.rbはかなり熱いです。何が熱いって、サイトのURLを自在にカスタマイズできるんですが、いろいろやろうとするとパズルみたいになってきて、ホントに一筋縄ではいかない。

だがそれがいい

押忍

※このエントリはZDNetブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet編集部の見解・意向を示すものではありません。

SpecialPR

  • デジタル変革か?ゲームセットか?

    デジタルを駆使する破壊的なプレーヤーの出現、既存のビジネスモデルで競争力を持つ
    プレイヤーはデジタル活用による変革が迫られている。これを読めばデジタル変革の全体像がわかる!

  • 【3/31まで早期割引受付中!】「IBM Watson Summit 2017」開催

    日本IBMが主催する最大の国内総合イベント。テクノロジー・リーダーの疑問を紐解く「企業IT、セキュリティー、モバイル、データ解析などの進化を探る」詳細はこちらから!