.logbook

学んだことを書き綴る、言わば航海日誌です。

Redmineプラグイン開発でモデルへカラムを追加する方法

Redmineプラグインrailsで動作しているが、MVCを生成するrailsジェネレータはplugin用のものを使用するようだ。このため、新規作成・削除といった基本的な操作はできるものの、変則的な操作は対応していなさそう。

代表例として一度作成したテーブルへカラムを追加するケースが挙げられる。 備忘録として、代替方法を記録しておく。

マイグレーションファイルの作成

テーブルへカラムを追加するためのマイグレーションファイルを作成する。今回は例として人(Person)テーブルへ年齢(age)というカラムを追加する。

$ vi db/migrate/001_add_age_to_person.rb

ファイル名の先頭連番は既に存在するマイグレーションファイルに続く番号とすること。おそらくこの連番に沿ってマイグレーションを実行していくため、連番が誤っているとテーブルを壊しかねない。

マイグレーションファイルには下記の通り記載する。

class Addカラム名Toテーブル名 < ActiveRecord::Migration
  def up
    add_column :テーブル名, :カラム名, :型名
  end
end

今回の例では下記の通りとなる。

class AddAgeToPersons < ActiveRecord::Migration
  def up
    add_column :persons, :age, :integer
  end
end

マイグレーションの実行と確認

マイグレーションを実行する

$ bundle exec rake redmine:plugins:migrate
(マイグレーションの経過状況が出力される)

$ mysql -uroot -p

mysql> use redmine_development;
mysql> show columns from persons;
(カラム一覧が表示され、ageが追加されていることを確認できる)