How to rename rails controller and model in a project

后端 未结 8 1062
遥遥无期
遥遥无期 2020-11-29 17:39

I started a Rails app and everything works fine. But now, I would like to rename a controller and the associated model:

I wanted to change the Corps con

8条回答
  •  生来不讨喜
    2020-11-29 17:51

    Here is what I would do:

    Create a migration to change the table name (database level). I assume your old table is called corps. The migration content will be:

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

    Change your model file name, your model class definition and the model associations:

    • File rename: corp.rb -> store.rb
    • Code of store.rb: Change class Corp for class Store
    • Rename all the model associations like has_many :corps -> has_many :stores

    Change your controller file name and your controller class definition:

    • File rename: corps_controller.rb -> stores_controller.rb
    • Code of stores_controller.rb: Change class CorpsController for class StoresController

    Rename views folders. From corps to stores.

    Make the necessary changes in paths in the config/routes.rb file, like resources :corps -> resources :stores, and make sure all the references in the code change from corps to stores (corps_path, ...)

    Remember to run the migration :)

    If previous is not possible, try to delete the db/schema.rb and execute:

     $ rake db:drop db:create db:migrate
    

提交回复
热议问题