Railsでモデルを作成してみる
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