Отменить строительные леса в 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, но не любые дополнительные изменения, которые вы могли сделать вручную.

Rishav Rastogi
источник
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

Например, это относится к генераторам для миграции, каркаса, модели ... и т. Д.

thekindofme
источник
13

Если вы просто хотите увидеть файлы, которые создаст генератор, вы можете передать параметр генератора --pretend или -p.

Судханшу Арья
источник
10

Лучший способ это:

destroy rake db:  rake db:rollback

Для эшафот:

rails destroy scaffold Name_of_script
user917158
источник
8
rails d scaffold <scaffoldname>

Кроме того, убедитесь, что вы отменили выполненную миграцию либо откатом, либо к определенной версии.

RageCore
источник
8

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

rake db:rollback

тогда

rails d scaffold
dedennufan
источник
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

использовать этот

rails d scaffold MODEL_NAME

rake db:rollback
Vipin
источник
1

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

модель рельсов d эшафот

Шоаиб Малик
источник
1

сначала нужно откатить миграцию, выполнив rake db: rollback, если есть, а затем уничтожить эшафот

rails d scaffold foo
Manish
источник
1

Да, scaffold сам и все вещи, которые объединяют это.

destroyКоманда противоположна generateи отменит один. Просто передайте имя так же, как это было сделано, generateи оно будет удалено из вашего проекта:

rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text
JackHasaKeyboard
источник
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
krishnar
источник
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 для генерации в качестве ярлыка.

Манодж Кумар
источник
0
rails g scaffold MyFoo 

для генерации и

rails d scaffold MyFoo

для удаления

Аяз Ахмад Тарар
источник
И не нужно упоминать атрибуты, это правильно? Спасибо
Шейн Дж