Отменить строительные леса в Rails


493

Есть ли способ отменить эффекты команды скаффолда в Rails?


4
рельсы разрушают эшафот ххх
Робин Гарг

1
В Rails 5: Генерация скаффолда с помощью: $ rails генерирует скаффолд <имя>. Если вы перенесли файлы, выполните откат: $ rake db: rollback . Уничтожить или отменить помост с помощью: $ rails уничтожить помост <имя>. Вы можете прочитать больше об этом в
Nesha Zoric

Ответы:


777

Во-первых , если вы уже запустили миграцию, сгенерированную scaffoldкомандой, вы должны сначала выполнить откат.

rake db:rollback

Вы можете создать строительные леса, используя:

rails generate scaffold MyFoo 

(или аналогичный), и вы можете уничтожить / отменить его, используя

rails destroy scaffold MyFoo

Это удалит все файлы, созданные generate, но не любые дополнительные изменения, которые вы могли сделать вручную.


11
не забывайте, rake db:rollbackпрежде чем уничтожить ваши леса. Это уничтожит / отбросит таблицу, если до нее не было никакой другой миграции, кроме миграции скаффолда.
Якоб Убайди

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

1
Если вы запустили rake db: migrate, после чего выполнили несколько других миграций, то имеет смысл создать миграцию, чтобы уничтожить таблицу, прежде чем «разрушать» скаффолд. поэтому сделайте что-нибудь вроде rails g миграции DropMyFoos, а затем откройте файл миграции и добавьте код для удаления таблицы. Запустите эту миграцию, а затем запустите эшафот уничтожения.
Викрам Шарма

Также имейте в виду, что он удалит папку просмотра для my_foo, даже если у вас там есть дополнительные файлы.
Андрей К

167

Ришав Растоги прав, а с рельсами 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.
Стив Кляйн

2

вам нужно откатить миграцию тоже после уничтожения эшафот тоже

rails destroy scaffold 'scaffoldname'
rake db:rollback

2

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

  1. rails d scaffold FooBar
  2. rake db:rollbackесли you_had_run_ 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: rollback, если есть, а затем уничтожить эшафот

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 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

Если мы запустили миграцию после этого, то сначала мы должны откатить миграцию, так как удаление scaffold также удалит файл миграции, и мы не сможем отменить эту миграцию.

В случае, если мы запустили миграцию:

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: Если вы уже запускаете (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 для генерации в качестве ярлыка.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.