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.