Railsでモデルを作成してみる

RailsでSQLiteを使ってみる
の続き

Railsでモデルを作成してみる。

モデル作成(カラム無し)

Railsでモデルを作成してみる。

$ rails generate model sample1
      invoke  active_record
      create    db/migrate/20141013071910_create_sample1s.rb
      create    app/models/sample1.rb
      invoke    test_unit
      create      test/models/sample1_test.rb
      create      test/fixtures/sample1s.yml

下記のファイルが生成される。

$ cat db/migrate/20141013071910_create_sample1s.rb
class CreateSample1s < ActiveRecord::Migration
  def change
    create_table :sample1s do |t|

      t.timestamps
    end
  end
end
$ cat app/models/sample1.rb
class Sample1 < ActiveRecord::Base
end

モデル作成(カラム有り)

Railsでカラム付きのモデルを作成してみる。

$ rails generate model sample2 c1:string c2:text c3:integer c4:datetime c5:timestamp c6:boolean
      invoke  active_record
      create    db/migrate/20141013072808_create_sample2s.rb
      create    app/models/sample2.rb
      invoke    test_unit
      create      test/models/sample2_test.rb
      create      test/fixtures/sample2s.yml
指定できる型は下記に載っている。

railsコマンド(rails) - Railsドキュメント
http://railsdoc.com/rails#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E7%94%9F%E6%88%90(rails%20generate%20model)

下記のファイルが生成される。

$ cat db/migrate/20141013072808_create_sample2s.rb
class CreateSample2s < ActiveRecord::Migration
  def change
    create_table :sample2s do |t|
      t.string :c1
      t.text :c2
      t.integer :c3
      t.datetime :c4
      t.timestamp :c5
      t.boolean :c6

      t.timestamps
    end
  end
end
$ cat app/models/sample2.rb
class Sample2 < ActiveRecord::Base
end

マイグレーション

マイグレーションしてデータベースに反映する。

$ rake db:migrate

下記のファイルが生成される。

$ cat db/schema.rb
・・・
ActiveRecord::Schema.define(version: 20141013072808) do

  create_table "sample", id: false, force: true do |t|
    t.integer "id"
    t.string  "name", limit: 256
  end

  create_table "sample1s", force: true do |t|
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "sample2s", force: true do |t|
    t.string   "c1"
    t.text     "c2"
    t.integer  "c3"
    t.datetime "c4"
    t.datetime "c5"
    t.boolean  "c6"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end

データベースに反映されているのが確認できる。

$ rails db
sqlite> .tables
sample             sample1s           sample2s           schema_migrations

sqlite> .schema sample1s
CREATE TABLE "sample1s" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "created_at" datetime, "updated_at" datetime);

sqlite> .schema sample2s
CREATE TABLE "sample2s" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "c1" varchar(255), "c2" text, "c3" integer, "c4" datetime, "c5" datetime, "c6" boolean, "created_at" datetime, "updated_at" datetime);

※sampleテーブルは前回の記事で作成したテーブルです。気にしないでください。

ちなみに、schema_migrationsテーブルは、下記のような感じになっている。

sqlite> .schema schema_migrations
CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL);
CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version");

sqlite> select * from schema_migrations;
20141013074417
20141013074419