2013年10月9日水曜日

Railsでモデル生成のお勉強中

今日はこの辺りRails Guide - Getting Started with Rails#Adding a Second Modelを参考にしてrailsでmodelの実装をしてました。あまりの簡単さにびっくりした。

とりあえずrake generate modelでモデルの定義をするとmodel classとそのUnit Testとdbのmigration fileをわんさか作ってくれます。DBのmigration手順はここ(Rails Guide - Active Record Migrations)に良くまとまっていますが、必要に応じてindexやrelationなんかを追加しつつrake commandで簡単にDBを作る事ができます。rake db:migrateでdb/migrate以下に作られたmigration fileを元にじゃんじゃかテーブルを作ります。以下の順序で行われるっぽい。

  1. db/migrate以下のファイルからテーブルを作成
  2. データベースからdb/schema.rbを作る
また、rake db:migrate:resetを実行するとmigration filesからテーブルを作成してseed.rbを作り直す。db:resetだとseed.rbからテーブルを作るのでmigration fileを何回変更しても変わらない。
少しハマった…。

rakeのコマンドとかもまだ全く覚えていないのですが、rake --tasksで他のタスクがぞろぞろでてきてくれます。rake -Pで親タスクやその依存関係とかも出力してくれるっぽい。

例えば上記のdb:migrate:resetは3つのタスクを組み合わせたものらしい。

rake db:migrate:reset
    db:drop
    db:create
    db:migrate
また、rake test:allでUnit Testの全実行をしてくれるっぽい。

db/seed.rbに開発環境用のデータを用意できる。rake consoleから実行するのと同じように$class.new(:$field1 => $value)みたいな感じで書ける。RubyのScriptなのでファイルから読み込んでLoopでオブジェクト生成とかも非常に簡単にできそう。rake db:seedだと単純にseed.rbからデータをLoadする。rake db:setupだとスキーマごと作り直してからデータをLoadする。ちょこちょこデータファイルを変更する時は後者を使う。

あ、後作ったModelやそのObjectはrails consoleから確認してったら超効率よくできた。こんな感じで一通りモデルを作って、DBに反映させて、テストして、開発用データの準備までが半日かからずにできちゃいました。DBとModelの定義を固定して厳しい命名規則を受け入れるだけでこれだけの恩恵をうけられるとは。明日はRSpecを導入する予定。Rails楽しいね。

0 件のコメント: