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

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

Im, используя textmate, было бы так же просто, как использовать функцию replace и заменить слово Post на Report?

Ответ 1

Если вы используете textmate, используйте "command-shift-f", чтобы искать строку во всем вашем проекте.

Ответ 2

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

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

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

Другим способом является 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. Тогда

Я запустил команды нижних рельсов в окне терминала.

$ 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 в вновь созданное приложение /views/products/index.html.erb и сделал поиск и замените в моем текстовом редакторе на этот файл, чтобы заменить board на product.

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

Ответ 3

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

Ответ 5

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