ページ

2014年1月4日土曜日

Ruby On Rails アプリケーション作成 4 - モデル作成 -

モデルの作成

とりあえず、データベースの形式はデフォルトのsqliteでいくとして、
データベースファイルを作成。
$ rake db:create
db/development.sqlite3 already exists

続いて、モデルの作成。
$ rails g model kind
      invoke  active_record
      create    db/migrate/20140104132444_create_kinds.rb
      create    app/models/kind.rb
      invoke    test_unit
      create      test/models/kind_test.rb
      create      test/fixtures/kinds.yml

⬇️マイグレーションファイルを以下に修正。
class CreateKinds < ActiveRecord::Migration
  def change
    create_table :kinds do |t|
      t.string :name, :null => false
      t.integer :io, :null => false
      t.timestamps
    end
  end
end

そしてマイグレート。
$ rake db:migrate
(in /Users/{ユーザ名}/Documents/develop/ruby/AcountBook)
==  CreateKinds: migrating ====================================================
-- create_table(:kinds)
   -> 0.0014s
==  CreateKinds: migrated (0.0015s) ===========================================

ちゃんとテーブルが作成されたか、sqliteコマンドで実行。
$ rails db
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
kinds              schema_migrations
sqlite> .schema kinds
CREATE TABLE "kinds" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255) NOT NULL, "io" integer NOT NULL, "created_at" datetime, "updated_at" datetime);
sqlite> .exit

ちゃんとできている模様。

マイグレーションファイル編集時に、別テーブルのidを参照する
例)
class CreateExpenses < ActiveRecord::Migration
  def change
    create_table :expenses do |t|
      t.references :kind, :null => false        ※ kindテーブルのidを参照
      t.references :member                         ※ memberテーブルのidを参照
      t.integer :expense, :null => false
      t.string :note
      t.date :date
      t.timestamps
    end
  end
end

⬇️参考リンク

とりあえず、全てのテーブルを作成。

0 件のコメント:

コメントを投稿