joppot

コピペで絶対動く。説明を妥協しない

プログラミング

ruby on railsのデータベースのテーブルにカラムを追加、削除する

投稿日:


glossy_starling

概要

みなさんこんにちはcandleです。今回はrailsのカラムの追加の仕方を紹介します。
本当にrailsは規約が多くて、多くて、なんでデータベースを直接いじれないんだと。

早速やっていきましょう。


前提

railsの環境が整っている。


テーブルを準備する

今回は下のようなテーブルを使用します。
スキャホールドでPostモデルを作ります。すると自動的にpostsテーブルが作られます。

 rails g scaffold Post title:string description:text

 rake db:migrate

postsテーブルは下のようなカラム構造になります。

"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"title" varchar(255), 
"description" text, 
"created_at" datetime,
"updated_at" datetime

1. sqlite3

実際にレコードを挿入した感じが下のようになります。

Bootstrap

現在はtitleとdescriptionというカラムがありますが、ここにtagというカラムをrailsから追加してみましょう。


railsからカラムを追加する

webアプリケーションフレームワークを使わずにwebアプリケーションを書いたことがある人ならわかると思いますが、データベースの操作は直接データベースをいじりますが、railsではrailsコマンドから操作します。

一般にカラムを追加するには下のコマンドを実行します。

rails generate migration Addカラム名Toテーブル名 カラム名:型名

「Addカラム名Toテーブル名」のカラム名とテーブル名は先頭を大文字にして書きます。スペースを挟んで小文字でカラム名を書き、コロンを入れて、カラムの型を記入します。

今回の事例にそって説明すると、すでにあるpostsテーブルにtagカラムを追加するにはしたのコマンドを入力します。

rails generate migration AddTagToPosts tag:string

多少ややこしいいですね。
実行しましょう。

fe

migrationファイルが作られるので、それを確認します。

Emacs

def changeの中に加える内容が書かれていない場合はrailsのコマンドが間違っています。
そういった時は、一度、作成したマイグレーションファイルを削除して、もう一度、railsコマンドを実行しましょう。

確認したら、この記述をデータベースに反映させます。

rake db:migrate

migra

データベースを確認しましょう。

rails dbでデータベースに移動してみると下の図の様に、tagカラムが追加されています。

lfae

うまくいきました成功です。


railsからカラムを削除する

今度は、作成した、tagカラムを削除します。
一般にカラムを削除するには下のコマンドを実行します。

 rails generate migration Removeカラム名Fromテーブル名 カラム名:型名

「Removeカラム名Fromテーブル名」のカラム名とテーブル名は先頭を大文字にして書きます。スペースを挟んで小文字でカラム名を書き、コロンを入れて、データベースのカラムの型を記入します。

例えば、先ほど作成したtagカラムを削除するには下のように記述します。

 rails generate migration RemoveTagFromPosts tag:string

すると、マイグレーションファイルが作成されますので、それを確認します。

remve

removecolumn

認したら、rake db:migrateコマンドでマイグレーションをデータベースに反映させます。

rake db:migrate

データベースを確認しましょう。

削除されていますね。

まとめ

他にもデータベースの変更や微妙なこともできるらしいです。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-プログラミング
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

wordpressのget_categoriesでサブカテゴリーを含まないカテゴリー一覧を取得する

概要 みなさんこんにちはcandleです。今回はカテゴリー一覧にサブカテゴリーを含まない取得の仕方を紹介します。 サブカテゴリーを使用しているサイトの場合、場合によってはサブカテゴリーとトップの階層の …

Railsの正規表現を使用して文字列から任意の文字を取得する

概要 みなさんこんにちはcandleです。今回はrailsの正規表現を使って任意の文字を文字列から取得する方法を紹介します。 rails4になってからなのか、railsはrubyであるにもかかわらず、 …

react-lazyloadを使って画像を遅延ロードをする

概要 みなさんこんにちはcandleです。今回はreact-lazyloadを使って画像の遅延読み込みをしてみましょう。SPAにおける問題は最初の読み込み時の遅さです。その中でも画像が多いサイトになる …

railsのwebrickでi18nの言語切り分けをサブドメインで設定する

概要 みなさんこんにちはcandleです。最近では海外展開も視野に入れたwebアプリケーションの開発が行われることが多くなってきているような気がします。 そうなってくると、webアプリケーションの国際 …

ruby on railsのckeditor gemの使い方をscaffoldを用いて解説する

概要 みなさんこんにちはcandleです。今回はruby on railsのckeditorという素晴らしいgemを使って見たいと思います。 ckeditorとはweb版の高機能なwordとかテキスト …

  • English
  • 日本語

ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー