Чи є якийсь спосіб «скасувати» ефекти команди ешафот в Rails?
Чи є якийсь спосіб «скасувати» ефекти команди ешафот в Rails?
Відповіді:
По-перше , якщо ви вже запустили міграції, згенеровані scaffold
командою, спочатку потрібно виконати відкат.
rake db:rollback
Ви можете створити риштування за допомогою:
rails generate scaffold MyFoo
(або подібне), і ви можете знищити / скасувати його за допомогою
rails destroy scaffold MyFoo
Це видалить усі файли, створені generate
, але не будь-які додаткові зміни, які ви могли внести вручну.
rake db:rollback
перед тим, як знищити ешафот. Це знищить / відкине таблицю, якщо немає жодної іншої міграції, крім міграції ешафот перед нею.
git status
та / або git diff
, щоб побачити, чи не пропустила команда знищення.
Rishav Rastogi має рацію, і з рейками 3.0 або вище його:
рейки генерують ешафот ...
рейки руйнують ліси ...
rake db:rollback
раніше, rails destroy scaffold
або якщо він не останній, який ви зробили граблями, db:migrate:down VERSION=20080906120000
ви можете знайти номер перед його ім'ям в db / migrate
Ви можете скасувати все, що зробили
rails generate xxx
За
rails destroy xxx
Наприклад, це стосується генераторів для міграції, ешафотів, моделей ... тощо
Якщо ви просто хочете побачити файли, які створить генератор, ви можете передати параметр генератора --pretend або -p.
Найкращий спосіб:
destroy rake db: rake db:rollback
Для будівельних лісів:
rails destroy scaffold Name_of_script
вперше ви можете перевірити міграцію бази даних, якщо у вас генерується ешафот. ви повинні знищити їх, щоб очистити вашу базу даних
rake db:rollback
тоді
rails d scaffold
Для генерації лісів в рейках -
rails generate scaffold MODEL_GOES_HERE
Для скасування лісів в рейках -
rails destroy scaffold MODEL_GOES_HERE
rails g
та rails d
.
Вам також потрібно зруйнувати міграцію після знищення ешафот
rails destroy scaffold 'scaffoldname'
rake db:rollback
Отже, обробіть процедуру, яку слід дотримуватися, щоб скасувати риштування в рейках 4. Запустіть команду, як показано нижче:
rails d scaffold FooBar
rake db:rollback
якщо ви_гад_рун_ rake db:migrate
після створення вище ешафоту?Це воно!
Ура!
Рекомендуємо відкат Спочатку введіть свій термінал.
rake db:rollback
Додайте ліси руйнування ("d" означає "знищити")
rails d scaffold name_of_scaffold
Насолоджуйтесь своїм кодом.
Спочатку вам доведеться зробити rake db: rollback для знищення таблиці,
якщо ви вже запустили rake db: migrate, а потім можете запустити
рейки d риштування Модель
Так, scaffold
сама і всі речі, які її об'єднують.
destroy
Команда протилежна generate
і скасує один. Просто введіть це ім'я так само, як generate
і з вашим проектом:
rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text
Щоб створити ешафот:
rails generate scaffold abc
Щоб відновити цей ешафот:
rails destroy scaffold abc
Якщо ви запустили міграцію для цього, просто відкату
rake db:rollback STEP=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
Коли ми генеруємо ешафот, буде створено такі файли:
Команда: 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
Ця команда видалить усі файли, створені ешафотом у вашому проекті.
Випадок 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 для створення в якості ярлика.
rails g scaffold MyFoo
для генерації та
rails d scaffold MyFoo
для видалення