Rails: переименование контроллера и соответствующей модели

Есть ли простой способ переименовать контроллер и модель в моем приложении и все экземпляры в соответствующем коде?

Я использую textmate, будет ли это так же просто, как использовать функцию замены и заменить слово «Отправить» на «Отчет»?


person trying_hal9000    schedule 15.04.2011    source источник
comment
у вас уже есть код или вы только что запустили генерацию?   -  person corroded    schedule 15.04.2011


Ответы (5)


Если вы используете textmate, используйте «command-shift-f» для поиска строки во всем вашем проекте.

person Patrick Connor    schedule 20.04.2011

Вам нужно изменить имя Контроллер и связанные с ним Модель, Представления, Помощники, Тесты. и маршруты, имена файлов, имена классов и имена в определениях классов.

Я нашел два способа сделать это, но прежде чем что-либо попробовать, я рекомендую вам создать резервную копию вашего приложения, предпочтительно с помощью системы контроля версий программного обеспечения, такой как Git и Github.com.

Ваш первый вариант - сделать это вручную, и здесь есть хорошее объяснение того, как это сделать: Как переименовать контроллер и модель rails в проекте

Другой способ - destroy ваш контроллер и модель, а затем generate новый, это удалит все файлы, которые были сгенерированы в первый раз, и заменит их новыми. Майкл Хартл хорошо объясняет это решение в своем онлайн-руководстве по Ruby on Rails здесь: http://ruby.railstutorial.org/chapters/static-pages#sidebar-undoing_things

Это решение, которому я следовал, когда мне нужно было внести это изменение в свое приложение, мне нужно было заменить созданный мной каркас MVC с именем board на новый с именем product.

<сильный>1. Первый

Я сделал резервную копию своей работы в макете доски, app/views/boards/index.html.erb

<сильный>2. Затем

Я выполнил приведенные ниже команды rails в окне терминала.

$ 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. Наконец

Я скопировал резервную копию файла boards/index.html.erb во вновь созданный файл app/views/products/index.html.erb и нашел & заменить в моем текстовом редакторе в этом файле, чтобы заменить board на product.

Я думаю, что второй вариант намного надежнее и быстрее, но важно внести это изменение на ранней стадии вашего проекта, прежде чем вы внесете слишком много ручных изменений в код. Было бы лучше просто потратить немного больше времени на планирование ваших имен MVC и таблиц базы данных, прежде чем вы начнете свой проект.

person Holly    schedule 16.11.2012

Вы также можете использовать гем rails_refactor для переименования контроллера, модели и т. д. Для получения дополнительной информации проверьте https://github.com/jcrisp/rails_refactor

person Gagan Gami    schedule 26.03.2014

Чтобы переименовать контроллер и модель, используйте этот гем https://github.com/jcrisp/rails_refactor.

person Mukesh    schedule 30.04.2013

И да и нет. Вы можете переименовать его таким образом, но вам также потребуется переименовать файлы, иначе Rails не будет знать, где искать файлы, соответствующие новой модели/контроллеру/и т. д. отчета.

person coreyward    schedule 15.04.2011
comment
И вы также, вероятно, захотите переименовать переменные в вашем контроллере(ах), особенно если вы используете партиалы, которые ожидают определенного соглашения об именах. - person douglasr; 15.04.2011