Скасувати будівельні ліси в рейках


493

Чи є якийсь спосіб «скасувати» ефекти команди ешафот в Rails?


4
рейки руйнують ешафот xxx
Робін Гарг

1
У Rails 5: Створюйте ешафот за допомогою: $ rails генерує ешафот <ім'я>. Якщо ви перенесли свої файли, виконайте відкат: $ rake db: rollback . Знищіть або скасуйте ешафот за допомогою: $ рейки знищують ешафот <ім'я>. Більше про це можна прочитати за адресою
Неша Зорич

Відповіді:


777

По-перше , якщо ви вже запустили міграції, згенеровані scaffoldкомандою, спочатку потрібно виконати відкат.

rake db:rollback

Ви можете створити риштування за допомогою:

rails generate scaffold MyFoo 

(або подібне), і ви можете знищити / скасувати його за допомогою

rails destroy scaffold MyFoo

Це видалить усі файли, створені generate, але не будь-які додаткові зміни, які ви могли внести вручну.


11
не забувайте rake db:rollbackперед тим, як знищити ешафот. Це знищить / відкине таблицю, якщо немає жодної іншої міграції, крім міграції ешафот перед нею.
Якоб Убайді

3
В деяких випадках все ще залишаються файли, що залишилися, які не були видалені з ешафоту. Перевірте свій контроль версій, наприклад git statusта / або git diff, щоб побачити, чи не пропустила команда знищення.
кодування

1
Якщо ви запустили rake db: migrate зробили деякі інші міграції після цього, тоді є сенс створити міграцію, щоб знищити таблицю, перш ніж "знищити" ешафот. тому зробіть щось на зразок рейки g міграції DropMyFoos, а потім відкрийте файл міграції та додайте код для випадання таблиці. Запустіть цю міграцію та запустіть ешафот для знищення.
Вікрам Шарма

Також пам’ятайте, що вона видалить папку перегляду для my_foo, навіть якщо у вас є додаткові файли.
Ендрю К

167

Rishav Rastogi має рацію, і з рейками 3.0 або вище його:

рейки генерують ешафот ...
рейки руйнують ліси ...

8
@femi Стіл був зроблений граблями. Найкращий спосіб видалити його запускається rake db:rollbackраніше, rails destroy scaffoldабо якщо він не останній, який ви зробили граблями, db:migrate:down VERSION=20080906120000ви можете знайти номер перед його ім'ям в db / migrate
Travis Pessetto

40

Ви можете скасувати все, що зробили

rails generate xxx

За

rails destroy xxx

Наприклад, це стосується генераторів для міграції, ешафотів, моделей ... тощо


13

Якщо ви просто хочете побачити файли, які створить генератор, ви можете передати параметр генератора --pretend або -p.


10

Найкращий спосіб:

destroy rake db:  rake db:rollback

Для будівельних лісів:

rails destroy scaffold Name_of_script

8
rails d scaffold <scaffoldname>

Також переконайтеся, що ви скасували міграцію, яку ви здійснили, відкатом чи певною версією.


8

вперше ви можете перевірити міграцію бази даних, якщо у вас генерується ешафот. ви повинні знищити їх, щоб очистити вашу базу даних

rake db:rollback

тоді

rails d scaffold

4

Щоб створити риштування:

rails generate scaffold xyz

Щоб відновити риштування:

rails destroy scaffold xyz

4

Рейки знищують назву

rake db:rollback

1
спочатку відкату (якщо ви мігрували), а потім знищити ешафот
гавіт

3

Для генерації лісів в рейках -

rails generate scaffold MODEL_GOES_HERE

Для скасування лісів в рейках -

rails destroy scaffold MODEL_GOES_HERE

2
Також ярлики rails gта rails d.
steve klein

2

Вам також потрібно зруйнувати міграцію після знищення ешафот

rails destroy scaffold 'scaffoldname'
rake db:rollback

2

Отже, обробіть процедуру, яку слід дотримуватися, щоб скасувати риштування в рейках 4. Запустіть команду, як показано нижче:

  1. rails d scaffold FooBar
  2. rake db:rollbackякщо ви_гад_рун_ rake db:migrateпісля створення вище ешафоту?

Це воно!

Ура!


2

Рекомендуємо відкат Спочатку введіть свій термінал.

rake db:rollback

Додайте ліси руйнування ("d" означає "знищити")

rails d scaffold name_of_scaffold

Насолоджуйтесь своїм кодом.



1

Спочатку вам доведеться зробити rake db: rollback для знищення таблиці,
якщо ви вже запустили rake db: migrate, а потім можете запустити

рейки d риштування Модель


1

Вам потрібно спочатку відкатати міграції, виконавши rake db: відкат, якщо такий є, а потім знищити ешафот

rails d scaffold foo

1

Так, scaffoldсама і всі речі, які її об'єднують.

destroyКоманда протилежна generateі скасує один. Просто введіть це ім'я так само, як generateі з вашим проектом:

rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text

1

Щоб створити ешафот:

rails generate scaffold abc

Щоб відновити цей ешафот:

rails destroy scaffold abc

Якщо ви запустили міграцію для цього, просто відкату

rake db:rollback STEP=1

1

постачальник іншого рішення на основі git

розпочати новий проект

rails new project_name
cd project_name

ініціалізувати git

git init
git commit -m "initial commit"

створити ешафот

rails g scaffold MyScaffold
rake db:migrate

відкат ешафот

rake db:rollback
git reset --hard
git clean -f -d

1

рейки [варіант] лісу ешафот_назва

Варіант

g    generate
d    destroy

Якщо ти зробиш

rails g  scaffold myFoo

Потім поверніть його назад, використовуючи

rails d scaffold MyFoo

0

Коли ми генеруємо ешафот, буде створено такі файли:

Команда: rails generate scaffold Game

Файли створені:

>       invoke  active_record
>       create    db/migrate/20160905064128_create_games.rb
>       create    app/models/game.rb
>       invoke    test_unit
>       create      test/models/game_test.rb
>       create      test/fixtures/games.yml
>       invoke  resource_route
>        route    resources :games
>       invoke  inherited_resources_controller
>       create    app/controllers/games_controller.rb
>       invoke    erb
>       create      app/views/games
>       create      app/views/games/index.html.erb
>       create      app/views/games/edit.html.erb
>       create      app/views/games/show.html.erb
>       create      app/views/games/new.html.erb
>       create      app/views/games/_form.html.erb
>       invoke    test_unit
>       create      test/controllers/games_controller_test.rb
>       invoke    helper
>       create      app/helpers/games_helper.rb
>       invoke      test_unit
>       create        test/helpers/games_helper_test.rb
>       invoke    jbuilder
>       create      app/views/games/index.json.jbuilder
>       create      app/views/games/show.json.jbuilder
>       invoke  assets
>       invoke    coffee
>       create      app/assets/javascripts/games.js.coffee
>       invoke    scss
>       create      app/assets/stylesheets/games.css.scss
>       invoke  scss
>       create    app/assets/stylesheets/scaffolds.css.scss

Якщо ми запустили міграцію після цього, ми повинні спершу відкатати міграцію, оскільки видалення скелета також видалить файл міграції, і ми не зможемо відновити цю міграцію.

Якщо ми перенесли міграцію:

rake db:rollback

і після цього ми можемо безпечно зняти ешафот цим комендатом.

rails d scaffold Game

Ця команда видалить усі файли, створені ешафотом у вашому проекті.


0

Кожен раз, коли ви запустите rails g, ви можете змінити його шляхом запуску rails d(знищення), щоб видалити створене вами. Якщо ви вже бігли rake db:migrate, вам потрібно буде бігти, rake db:rollbackперш ніж знищити :)


0

Випадок 1: Якщо ви запускаєте лише цю команду для генерації ешафотів -

rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE

Ex - rails generate scaffold User name:string address:text

але до цього часу ви не виконували жодної команди для міграції, як

rake db:migrate

тоді вам потрібно запустити лише цю команду, як-от -

rails destroy scaffold User name:string address:text

Випадок 2: Якщо ви вже виконуєте (ліси та міграція) за допомогою команд нижче:

rails generate scaffold User name:string address:text

rake db:migrate 

Тоді вам слід запустити першу команду міграції відката, а потім знищити ешафот, як нижче -

rake db:rollback

rails destroy scaffold User name:string address:text

Таким чином, таким чином ми можемо скасувати риштування. Також ми можемо використовувати d для знищення, а g для створення в якості ярлика.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.