Есть ли способ отменить эффекты команды скаффолда в Rails?
Есть ли способ отменить эффекты команды скаффолда в Rails?
Ответы:
Во-первых , если вы уже запустили миграцию, сгенерированную scaffold
командой, вы должны сначала выполнить откат.
rake db:rollback
Вы можете создать строительные леса, используя:
rails generate scaffold MyFoo
(или аналогичный), и вы можете уничтожить / отменить его, используя
rails destroy scaffold MyFoo
Это удалит все файлы, созданные generate
, но не любые дополнительные изменения, которые вы могли сделать вручную.
rake db:rollback
прежде чем уничтожить ваши леса. Это уничтожит / отбросит таблицу, если до нее не было никакой другой миграции, кроме миграции скаффолда.
git status
и / или git diff
, чтобы увидеть, пропустила ли команда destroy что-либо.
Ришав Растоги прав, а с рельсами 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
если you_had_run_ 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 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
Если мы запустили миграцию после этого, то сначала мы должны откатить миграцию, так как удаление scaffold также удалит файл миграции, и мы не сможем отменить эту миграцию.
В случае, если мы запустили миграцию:
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: Если вы уже запускаете (Scaffold and Migration) нижеуказанные команды, такие как -
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
для удаления