二つ目のデータテーブル作成。少しrailsになれてきた。

こんばんわ。yasutoです。
また間があいちゃいました。

前回、コンテンツの一覧表示、詳細表示、新規登録ができたので次は下記にチャレンジ。

  • ユーザーのデータテーブルをつくる
  • ログイン機能をつくる
  • ユーザーと投稿コンテンツを関係づける

「ユーザー登録して、コンテンツを投稿する」という形をつくりたいのです。

まずユーザーのデータテーブルですが、すでにコンテンツを作った後なのでさくさくいけました。
自分で忘れないように手順を書いておきます。

まずは

$ ruby script/generate model user 

でユーザーのモデルファイル一式を作ります。ここではまだ中身は空。
上記実行によって、db/migrate/以下に「002_create_users.rb」というファイルができたので、
その中にユーザー情報に必要なテーブルを記述してきます。
※002になってますが、その前にコンテンツのデータテーブルを作ったのでそっちが001になってます。

create_table :users do |t|
      t.column :name, :string,         #ユーザー名
        :null => false
      t.column :sex, :integer          #性別(0:男、1:女)
      t.column :age, :integer          #年齢
     #〜略〜

といった感じ。そしたらmigration実行

$ rake db:migrate

今回はじめて使いましたが、

$ rake db:migrate VERSION=1

みたいに後ろにくっつけて実行するとテーブルを指定したバージョンに戻せます。
この例だと「001_create_なんたら」の状態に戻ります。なんて便利。

次にサンプルデータを入れるために「db/fixtures/development」に「users.yml」を作成。

Taro:
 id: 1
 name: 太郎
 sex: 0
 age: 31
 introduce: 福岡出身。会社員。テストテスト

こんな感じのを何人か分yml内に記述。

次にデータベースにこのymlを読み込みます。
「lib/tasks」以下に「load.rake」をつくって

task :load => :environment do
  require 'active_record/fixtures'
  ActiveRecord::Base.establish_connection(:development)
  Fixtures.create_fixtures('C:\\rails\\rightway\db\fixtures\development', 'users')
end
$ rake load

で実行。

このあたりはもう本読まないでもできるようになったかも。
サンプルデータ作成&読み込みはもっと効率のよい方法があるみたいなのですがとりあえず先に進むことを優先してこのままいきます。

下記参考にさせてもらいました。
http://d.hatena.ne.jp/hatabo04/20090315/1237100858

ログイン機能とリレーションもうまくいったのですがまた後日ブログに書きます。
それではおやすみなさい。

※2009/07/29追記:すいません、ファイル名に間違いがありました。load.rb ではなく、load.rake でした。