Rails'te iskele geri al


493

Rails'te bir iskele komutunun etkilerini 'geri almanın' bir yolu var mı?


4
raylar iskele xxx yok
— Robin Garg

1
Rails 5: ile iskele oluştur: $ rails <ad> iskele oluşturur. Dosyalarınızı taşıdıysanız, bir geri alma işlemi gerçekleştirin: $ rake db: rollback . İskele'yi aşağıdakilerle yok edin veya geri alın: $ rails iskele <ad> yok. Bu konuda daha fazla bilgi için
— Nesha Zoric

Yanıtlar:


777

İlk olarak , scaffoldkomut tarafından oluşturulan geçişleri zaten çalıştırdıysanız, önce bir geri alma gerçekleştirmeniz gerekir.

rake db:rollback

Aşağıdakileri kullanarak iskele oluşturabilirsiniz:

rails generate scaffold MyFoo 

(veya benzeri) ve geri alma / yok edebilir kullanarak ona

rails destroy scaffold MyFoo

Bu, tarafından oluşturulan tüm dosyaları siler generate, ancak manuel olarak yapmış olabileceğiniz ek değişiklikleri silmez .


11
rake db:rollbackEğer iskele yok önce unutma . İskele önündeki göç dışında başka bir göç yoksa bu tabloyu yok eder / düşürür.
— Yakob Ubaidi

3
Bazı durumlarda, iskeleden silinmemiş kalan dosyalar hala vardır. Destroy komutunun herhangi bir şeyi kaçırıp kaçırmadığını görmek için sürüm kontrolünüzü, örneğin git statusve / veya kontrol edin git diff.
— aaron-kodlama

1
Eğer komisyon db: migrate çalıştırdıysanız bundan sonra başka bazı geçişler yaptıysanız, iskele "yok" etmeden önce tabloyu yok etmek için bir göç oluşturmak mantıklı. bu yüzden rails g migration DropMyFoos gibi bir şey yapın ve sonra geçiş dosyasını açın ve tabloyu bırakmak için kod ekleyin. Bu geçişi çalıştırın ve ardından yok etme iskelesini çalıştırın.
— Vikram Sharma

Ayrıca, ekstra dosyalarınız olsa bile, my_foo için görünüm klasörünü kaldıracağını unutmayın.
— Andrew K

167

Rishav Rastogi haklı ve 3.0 veya daha yüksek raylı:

raylar iskele oluşturur ...
raylar iskele yok ...

8
@femi Masa tırmıkla yapıldı. Kaldırmanın en iyi yolu rake db:rollbackönce çalışıyorsa rails destroy scaffoldveya komisyon db:migrate:down VERSION=20080906120000yaptığınız son değilse, isminden önce numarayı db /
— migrate'de bulabilirsiniz

40

Yaptığın her şeyi geri alabilirsin

rails generate xxx

Tarafından

rails destroy xxx

Örneğin bu, jeneratörleri göç, iskele, model ... vb.


13

Bir jeneratörün oluşturacağı dosyaları görmek istiyorsanız jeneratörü --pretend veya -p seçeneğini geçebilirsiniz.


10

En iyi yol:

destroy rake db:  rake db:rollback

İskele için:

rails destroy scaffold Name_of_script

8
rails d scaffold <scaffoldname>

Ayrıca, geri alma veya belirli bir sürüme yaptığınız taşımayı geri aldığınızdan emin olun.


8

ilk kez, iskele oluşturduysanız veritabanı geçişini kontrol edebilirsiniz. veritabanını temizlemek için onları yok etmelisin

rake db:rollback

sonra

rails d scaffold

4

İskele oluşturmak için:

rails generate scaffold xyz

İskele'yi geri almak için:

rails destroy scaffold xyz


3

Raylarda iskele oluşturmak için -

rails generate scaffold MODEL_GOES_HERE

Raylardaki iskele geri almak için -

rails destroy scaffold MODEL_GOES_HERE

2
Ayrıca kısayollar rails gve rails d.
— steve klein

2

İskeleyi de tahrip ettikten sonra da göçleri geri almanız gerekiyor

rails destroy scaffold 'scaffoldname'
rake db:rollback

2

Yani, raylarda iskele geri almak için takip etmelisiniz 4. Komut aşağıdaki gibi çalıştırın:

  1. rails d scaffold FooBar
  2. rake db:rollbackyou_had_run_ eğer rake db:migrateiskele üzerinde oluşturduktan sonra?

Bu kadar!

Şerefe!


2

Geri almayı öner İlk önce Terminalinizi yazın.

rake db:rollback

Yok etme iskelesi ekle ('d' 'yok' anlamına gelir)

rails d scaffold name_of_scaffold

Kodunuzun tadını çıkarın.


1

bunu kullan

rails d scaffold MODEL_NAME

rake db:rollback

1

Öncelikle yapmanız gerekecektir geri alma: tırmık db tablo yok için
zaten yayınlanmadığını tırmık db: migrate ve sonra çalıştırabilirsiniz

raylar d iskele Modeli


1

Eğer varsa komisyon db: geri alma varsa önce taşıma geri almanız gerekir Ve sonra tarafından iskele yok

rails d scaffold foo

1

Evet scaffold kendisi ve onu birleştiren her şey.

destroyKomut tersidir generateve bir geri alır. Sadece aynı şekilde ismini generateiletin ve projenizden silinecektir:

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

1

İskele oluşturmak için:

rails generate scaffold abc

Bu iskeleyi geri almak için:

rails destroy scaffold abc

Taşıma işlemini çalıştırdıysanız geri alma

rake db:rollback STEP=1

1

sağlayıcı git dayalı başka bir çözüm

yeni bir proje başlat

rails new project_name
cd project_name

başlat git

git init
git commit -m "initial commit"

bir iskele oluşturmak

rails g scaffold MyScaffold
rake db:migrate

iskeleyi geri al

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

1

raylar [seçenek] iskele iskele_adı

seçenek

g    generate
d    destroy

Yaparsan

rails g  scaffold myFoo

Sonra kullanarak geri geri çevirin

rails d scaffold MyFoo

0

İskele oluşturduğumuzda, aşağıdaki dosyalar oluşturulacaktır:

Komut: rails generate scaffold Game

Oluşturulan dosyalar:

>       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

Bundan sonra taşımayı gerçekleştirdiysek, iskeleyi silme işlemi de göç dosyasını kaldıracağından ve bu taşımayı geri alamayacağımız için öncelikle taşımayı geri almalıyız.

Göçü çalıştırmamız durumunda:

rake db:rollback

ve bundan sonra bu komutanın iskelesini güvenle kaldırabiliriz.

rails d scaffold Game

Bu komut, projenizdeki iskele tarafından oluşturulan tüm dosyaları kaldırır.


0

Her koştuğunuzda rails g, rails dürettiklerinizi kaldırmak için koşarak (yok ederek) ters çevirebilirsiniz . Zaten koştuysanız rake db:migrate, rake db:rollbackyok etmeden önce koşmanız gerekecek :)


0

Durum 1: İskele oluşturmak için yalnızca bu komutu çalıştırırsanız -

rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE

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

ama şu ana kadar göç için herhangi bir komut çalıştırmadınız

rake db:migrate

yalnızca şu komutu çalıştırmanız gerekir -

rails destroy scaffold User name:string address:text

Durum 2: Zaten aşağıdaki gibi komutlarla (İskele ve Geçiş) çalıştırıyorsanız -

rails generate scaffold User name:string address:text

rake db:migrate 

Sonra ilk geri alma geçiş komutunu çalıştırmanız ve ardından aşağıdaki gibi iskele yok etmeniz gerekir -

rake db:rollback

rails destroy scaffold User name:string address:text

Böylece bu şekilde iskele sökülebilir. Ayrıca im ve g için d'yi kullanabiliriz için oluşturmak kısayol olarak.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.