1. ホーム
  2. ruby-on-rails

[解決済み] プロジェクトでrailsのコントローラとモデルの名前を変更する方法

2023-01-30 17:11:56

質問

Railsアプリを立ち上げ、すべて順調に動作しています。しかし、現在、コントローラと関連するモデルの名前を変更したいと思っています。

を変更したいと思いました。 Corps コントローラを Stores に変更し、モデルも同じように(最後のsを除いて)変更します。

googleで調べると、人々はコントローラとモデルを破棄して再度生成することを提案しました。問題は、各ファイルの実際のコードが消去されることです!

何か解決策があれば教えてください。よろしくお願いします。

どのように解決するのですか?

私ならこうします。

を作成します。 マイグレーション を使用して、テーブル名(データベースレベル)を変更します。あなたの古いテーブルの名前は 隊員 . 移行内容は、次のようになります。

class RenameCorpsToStores < ActiveRecord::Migration
  def change
    rename_table :corps, :stores
  end
end

モデルファイル名、モデルクラスの定義、モデルの関連付けを変更します。

  • ファイル名を変更します。 corp.rb -> store.rb
  • のコード store.rb : 変更 class Corp に対して class Store
  • すべてのモデルの関連付けを次のように変更します。 has_many :corps -> has_many :stores

コントローラファイル名とコントローラクラス定義を変更します。

  • ファイル名を変更します。 corps_controller.rb -> stores_controller.rb
  • のコード stores_controller.rb : 変更 class CorpsController に対して class StoresController

ビューフォルダの名前を変更します。から corps から stores .

のパスで必要な変更を行います。 config/routes.rb ファイルのパスを変更します。 resources :corps -> resources :stores そして、コード内のすべての参照が軍団から店舗に変わることを確認します (corps_path, ...)

マイグレーションを実行することを忘れないでください :)

前がダメなら、db/schema.rbを削除して実行してみてください。

 $ rake db:drop db:create db:migrate