Hoàn tác giàn giáo trong Rails


493

Có cách nào để 'hoàn tác' các tác động của lệnh giàn giáo trong Rails không?


4
đường ray phá hủy giàn giáo xxx
Robin Garg

1
Trong Rails 5: Tạo giàn giáo với: $ rails tạo giàn giáo <name>. Nếu bạn đã di chuyển các tệp của mình, hãy thực hiện rollback: $ rake db: rollback . Phá hủy hoặc hoàn tác giàn giáo với: $ rails phá hủy giàn giáo <name>. Bạn có thể đọc thêm về điều này tại
Nesha Zoric

Câu trả lời:


777

Đầu tiên , nếu bạn đã chạy các di chuyển được tạo bởi scaffoldlệnh, trước tiên bạn phải thực hiện khôi phục lại.

rake db:rollback

Bạn có thể tạo giàn giáo bằng cách sử dụng:

rails generate scaffold MyFoo 

(hoặc tương tự) và bạn có thể hủy / hoàn tác nó bằng cách sử dụng

rails destroy scaffold MyFoo

Điều đó sẽ xóa tất cả các tệp được tạo bởi generate, nhưng không có bất kỳ thay đổi bổ sung nào bạn có thể thực hiện thủ công.


11
đừng quên rake db:rollbacktrước khi bạn phá hủy giàn giáo của bạn. Điều này sẽ phá hủy / thả bảng nếu không có sự di chuyển nào khác ngoại trừ việc di chuyển của giàn giáo trước nó.
Yakob Ubaidi

3
Trong một số trường hợp vẫn còn các tệp còn sót lại không bị xóa khỏi giàn giáo. Kiểm tra kiểm soát phiên bản của bạn, ví dụ git statusvà / hoặc git diff, để xem lệnh hủy có bỏ sót điều gì không.
mã hóa aaron

1
Nếu bạn đã chạy rake db: di chuyển đã thực hiện một số di chuyển khác sau đó thì việc tạo một di chuyển để phá hủy bảng trước khi "phá hủy" giàn giáo là điều hợp lý. vì vậy hãy làm một cái gì đó như rails g di chuyển DropMyFoos và sau đó mở tệp di chuyển và thêm mã để thả bảng. Chạy di chuyển này và sau đó chạy giàn giáo phá hủy.
Vikram Sharma

Ngoài ra, hãy nhớ rằng nó sẽ xóa thư mục xem cho my_foo, ngay cả khi bạn có thêm tệp ở đó.
Andrew K

167

Rishav Rastogi đã đúng, và với đường ray 3.0 trở lên:

đường ray tạo ra giàn giáo ...
đường ray phá hủy giàn giáo ...

8
@femi Bàn được làm bằng cào. Cách tốt nhất để xóa nó là chạy rake db:rollbacktrước rails destroy scaffoldhoặc nếu đó không phải là cách cuối cùng bạn thực hiện, db:migrate:down VERSION=20080906120000bạn có thể tìm số trước tên của nó trong db / di chuyển
Travis Pessetto

40

Bạn có thể hoàn tác bất cứ điều gì bạn đã làm với

rails generate xxx

Bởi

rails destroy xxx

Ví dụ: điều này áp dụng các trình tạo cho di chuyển, giàn giáo, mô hình ... vv


13

Nếu bạn chỉ muốn xem các tệp mà trình tạo sẽ tạo, bạn có thể vượt qua tùy chọn --pretend hoặc -p của trình tạo.


10

Cách tốt nhất là:

destroy rake db:  rake db:rollback

Đối với giàn giáo:

rails destroy scaffold Name_of_script

8
rails d scaffold <scaffoldname>

Ngoài ra, hãy đảm bảo bạn hoàn tác việc di chuyển mà bạn đã thực hiện bằng cách khôi phục hoặc chuyển sang một phiên bản cụ thể.


8

lần đầu tiên, bạn có thể kiểm tra di chuyển cơ sở dữ liệu nếu bạn đã tạo ra giàn giáo. bạn phải phá hủy chúng để dọn dẹp cơ sở dữ liệu của bạn

rake db:rollback

sau đó

rails d scaffold

4

Để tạo giàn giáo:

rails generate scaffold xyz

Để hoàn nguyên giàn giáo:

rails destroy scaffold xyz

4

Tên đường ray phá hủy

rake db:rollback

1
rollback đầu tiên (nếu bạn di chuyển), sau đó phá hủy giàn giáo
gavit

3

Để tạo giàn giáo trong đường ray -

rails generate scaffold MODEL_GOES_HERE

Đối với hoàn tác giàn giáo trong đường ray -

rails destroy scaffold MODEL_GOES_HERE

2
Ngoài ra các phím tắt rails grails d.
steve klein

2

bạn cũng cần quay lại di chuyển sau khi phá hủy giàn giáo

rails destroy scaffold 'scaffoldname'
rake db:rollback

2

Vì vậy, Quá trình bạn nên tuân theo để hoàn tác giàn giáo trong đường ray 4. Chạy Lệnh như sau:

  1. rails d scaffold FooBar
  2. rake db:rollbackif you_had_run_ rake db:migratesau khi tạo giàn giáo ở trên?

Đó là nó!

Chúc mừng!


2

Đề nghị rollback Đầu tiên, nhập vào Terminal của bạn.

rake db:rollback

Thêm phá hủy giàn giáo ('d' là viết tắt của 'phá hủy')

rails d scaffold name_of_scaffold

Thưởng thức mã của bạn.


1

dùng cái này

rails d scaffold MODEL_NAME

rake db:rollback

1

Trước tiên, bạn sẽ phải thực hiện rake db: rollback để hủy bảng
nếu bạn đã chạy rake db: di chuyển và sau đó bạn có thể chạy

mô hình đường ray d giàn giáo


1

trước tiên, bạn cần khôi phục lại các lần di chuyển bằng cách thực hiện rake db: rollback nếu có Và sau đó phá hủy giàn giáo bằng cách

rails d scaffold foo

1

Vâng, scaffoldchính nó và tất cả những điều hợp nhất nó.

Các destroylệnh là đối diện củagenerate và sẽ lùi lại một. Chỉ cần đặt tên giống như đã làm với generatenó và nó sẽ bị xóa khỏi dự án của bạn:

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

1

Để tạo ra giàn giáo:

rails generate scaffold abc

Để hoàn nguyên giàn giáo này:

rails destroy scaffold abc

Nếu bạn đã chạy di chuyển cho nó, chỉ cần khôi phục

rake db:rollback STEP=1

1

cung cấp giải pháp khác dựa trên git

bắt đầu một dự án mới

rails new project_name
cd project_name

khởi tạo git

git init
git commit -m "initial commit"

tạo ra một giàn giáo

rails g scaffold MyScaffold
rake db:migrate

rollback giàn giáo

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

1

đường ray [tùy chọn] giàn giáo giàn giáo

Lựa chọn

g    generate
d    destroy

Nếu bạn làm

rails g  scaffold myFoo

Sau đó đảo ngược lại bằng cách sử dụng

rails d scaffold MyFoo

0

Khi chúng tôi tạo ra giàn giáo, các tệp sau sẽ được tạo:

Chỉ huy: rails generate scaffold Game

Các tệp được tạo:

>       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

Nếu chúng tôi đã chạy di chuyển sau đó thì chúng tôi phải quay lại di chuyển trước vì việc xóa giàn giáo cũng sẽ xóa tệp di chuyển và chúng tôi sẽ không thể hoàn nguyên di chuyển đó.

Trong trường hợp chúng tôi đã chạy di chuyển:

rake db:rollback

và sau này chúng ta có thể gỡ bỏ giàn giáo một cách an toàn bằng cách này.

rails d scaffold Game

Lệnh này sẽ loại bỏ tất cả các tệp được tạo bởi giàn giáo trong dự án của bạn.


0

Bất cứ khi nào bạn chạy rails g, bạn có thể đảo ngược nó bằng cách chạy rails d(hủy) để xóa những gì bạn đã tạo. Nếu bạn đã chạy rake db:migrate, bạn sẽ cần phải chạy rake db:rollbacktrước khi phá hủy :)


0

Trường hợp 1: Nếu bạn chỉ chạy lệnh này để tạo giàn giáo -

rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE

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

nhưng cho đến bây giờ bạn không chạy bất kỳ lệnh nào để di chuyển như

rake db:migrate

thì bạn chỉ cần chạy lệnh này như thế nào -

rails destroy scaffold User name:string address:text

Trường hợp 2: Nếu bạn đã chạy (Giàn giáo và Di chuyển) bằng các lệnh bên dưới như -

rails generate scaffold User name:string address:text

rake db:migrate 

Sau đó, bạn cần chạy lệnh di chuyển rollback đầu tiên sau đó phá hủy giàn giáo như bên dưới -

rake db:rollback

rails destroy scaffold User name:string address:text

Vì vậy, theo cách này, chúng ta có thể hoàn tác giàn giáo. Ngoài ra chúng ta có thể sử dụng d để hủyg để tạo như một phím tắt.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.