Rails: renaming a controller and corresponding model

前端 未结 5 892
南笙
南笙 2021-01-21 07:27

Is there an easy way to rename a controller and model in my app and all the instances in the corresponding code?

I\'m using textmate, would this be as simple as using t

5条回答
  •  迷失自我
    2021-01-21 07:57

    You need to change the name of the Controller and the associated Model, Views, Helpers, Tests & Routes directories, file names, class names & the names in the class definitions.

    I found two ways to do this but before you try anything I recommend you back-up your app, preferably with a Software Version Control system like Git & Github.com.

    Your first option is to do it manually & there is a good explanation on how to do this here: How to rename rails controller and model in a project

    Another way is to destroy your controller & model, and then generate a new one, this will remove all the files which were generated the first time round & replace them with new ones. Michael Hartl explains this solution well in his online guide to Ruby on Rails here: http://ruby.railstutorial.org/chapters/static-pages#sidebar-undoing_things

    This is the solution I followed when I needed to make this change to my app, I needed to replace a MVC scaffold I generated called board with a new one called product.

    1. First

    I made a back-up of the work I did in the layout of the board view, app/views/boards/index.html.erb

    2. Then

    I ran the below rails commands in the terminal window.

    $ rake db:rollback
    
    $ rails destroy scaffold board name:string description:text image:string price:decimal
    
    $ rails generate scaffold product product_type:string name:string description:text image:string price:decimal
    
    $ rake db:migrate
    

    3. Finally

    I copied my backed-up boards/index.html.erb file into the newly generated app/views/products/index.html.erb & did a find & replace in my text editor on this file to replace board with product.

    I think the second option is much more reliable & quicker but it’s important to make this change early on in your project before you make too many manual changes to the code. It would be better to just take a little more time planning your MVC names & database tables properly before you start your project.

提交回复
热议问题