joppot

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

プログラミング

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

投稿日:

Pocket

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

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

関連記事

Stinger3のURLまたはタブの横にあるロゴを変更する

概要 みなさんこんにちはcnadleです。Stinger3のカスタマイズをしましょう。どんなwebサイトでもURLの周辺にロゴがありますよね。今回はそれを変更します。 条件 WordPressを利用し …

react nativeのandroidでfailed to find Build Tools revision 23.0.1エラーが出る時の対処

概要 みなさんこんにちは、candleです。今回はreact nativeでrun-androidでbuildが失敗する時の対処です。 私の場合最新のandroid-sdkを入れたところ、以下のような …

Mysqlテーブルの照合順序を変更する

概要 みなさんこんにちはcandleです。今回はテーブルの照合順序を変更する方法を行います。 この方法はやっても、mysqlクエリー1行ですみます。早速やりましょう。 テーブルの照合順序を変更する 次 …

pythonのfabricでファイルを分割しfabfileに読み込む方法

概要 皆さんこんにちはcandleです。今回はfabricで分割したpythonファイルを読み込んでみましょう。 fabricはfabfile.pyというファイルに実行したいコマンドを書くのですが、 …

MAMPのPHPからSQLite3データベースにアクセスして値を取得する

概要 みなさんこんにちはcandleです。MAMPのSQLiteデータベースとテーブルを作成して、レコードも挿入した事なので、値を取得してみましょう。

  • English
  • 日本語

プロフィール


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

スポンサードリンク

アーカイブ