この前の続きになります。
SinatraとActiveRecord,SQLite,Haml等を使ってWebアプリの雛形を作ってみた
今日はSinatraで作っていたテーブルにカラムを追加してみようと思います。
元のテーブル comments
カラム名 | 型 |
---|---|
id | INTEGER |
body | text |
created_at | datetime |
updated_at | datetime |
このテーブルにuser_idというカラムを追加したいと思います。
1 2 |
$ bundle exec rake db:create_migration NAME=comments_add_user_id VERSION=002 |
実行したらdb/migrate/002_comments_add_user_id.rbというファイルが作成されます。
このファイルにadd_column(テーブル名, カラム名, 型)で追加・編集します。
(この時はまだ気づかなかったのですが、user_idの型をtextで作ってしまっていました。後からintegerに変更します。)
1 2 3 4 5 6 7 8 9 |
$ emacs db/migrate/002_comments_add_user_id.rb class CommentsAddUserId < ActiveRecord::Migration[5.0] def change + add_column(:comments, :user_id, :text) end end |
設定を反映します。
1 2 |
$ bundle exec rake db:migrate |
最新のテーブル comments
カラム名 | 型 |
---|---|
id | INTEGER |
body | text |
created_at | datetime |
updated_at | datetime |
user_id | text |
型の変更
ボ〜としていて後から気づいたのですが、user_idをtext型で作ってしまっていました。
これは後々大変そうなので、Integer型に修正しておきます。
1 2 |
$ bundle exec rake db:create_migration NAME=comments_change_column_to_integer VERSION=003 |
作成されたファイルにchange_column(テーブル名, カラム名, 型)で編集します。
1 2 3 4 5 6 7 8 9 |
$ emacs db/migrate/003_comments_change_column_to_integer.rb class CommentsChangeColumnToInteger < ActiveRecord::Migration[5.0] def change + change_column(:comments, :user_id, :integer) end end |
再度、設定を反映します。
1 2 |
$ bundle exec rake db:migrate |
スキーマで確認
1 2 3 4 |
sqlite> .schema CREATE TABLE "comments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "body" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "user_id" integer); |
こういうブログもありました。
- SinatraのDBにリレーションの設定もしてみる
- Railslでカラム名(列名)の追加と削除と変更
- SinatraとActiveRecord,SQLite,Haml等を使ってWebアプリの雛形を作ってみた
- geocoder + Sinatra (+ ActiveRecord) で位置情報を使ってみる
- geocoder + Sinatra (+ ActiveRecord) で位置情報を使ってみる その2
人気のあるブログ:
- 新しいgemのアップデート方法(rubygems-update)
- Coda2でscssを使うときのお供にcompassをどうぞ。
- bashでUTF-8に設定して日本語表示したり使ったり。Emacsでも。
- NginxをSSL付きで動かすために設定したこと
- Macでフォルダを結合したいとき