IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

Rails5 でモデル名を変更してみる

はじめに

ここでは以下の記事を参考にして、Rails5 でモデル名を変更してみることにする。

 

使ってみる

サンプル用のアプリを作成する。

  • rails new model_change_sample
  • cd model_change_sample

 

サンプル用に scaffold で Article モデルを作成する。

  • bin/rails g scaffold Article title:string content:text
  • bin/rails db:migrate

 

これで DB に articles テーブルを作成できた。

f:id:matt-note:20190515003049p:plain

 

Article を Post に変更する

destroy scaffold コマンドを使わずに、手作業で変更していくことにする。

モデル名を変更する時は、テーブル名を変更しておく必要がある。

マイグレーションファイルを作成する。

  • bin/rails g migration RenameArticlesToPosts

 

rename_table メソッドを使って、articles テーブルを posts テーブルに変更する。【参考:3.8 changeメソッドを使う

f:id:matt-note:20190515003547p:plain

 

マイグレーションを実行して、DB に反映させる。

 

テーブル名を確認してみる。

f:id:matt-note:20190515001602p:plain

-> テーブル名を posts に変更できた。

 
モデル名を変更する

f:id:matt-note:20190515002148p:plain

f:id:matt-note:20190515002314p:plain

 

ファイル名を変更する

f:id:matt-note:20190515002417p:plain

 

コントローラを変更する

Article で使っている部分を、まるきり Post に変更する。

f:id:matt-note:20190515003837p:plain

f:id:matt-note:20190515004201p:plain


ビューも変更する

とにかく、Article だったものを Post に変更する。

 

テストを変更する

こちらも Article だったものを Post に変更する。

f:id:matt-note:20190515004608p:plain

f:id:matt-note:20190515004731p:plain

 

まとめ

Rails でモデル名を変更するときは、テーブル名の変更を行う。その他、ファイル名と変数名を新しいモデル名に変更していく必要がある。