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?
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?
Câu trả lời:
Đầu tiên , nếu bạn đã chạy các di chuyển được tạo bởi scaffold
lệ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.
rake db:rollback
trướ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ó.
git status
và / hoặc git diff
, để xem lệnh hủy có bỏ sót điều gì không.
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 ...
rake db:rollback
trước rails destroy scaffold
hoặc nếu đó không phải là cách cuối cùng bạn thực hiện, db:migrate:down VERSION=20080906120000
bạn có thể tìm số trước tên của nó trong db / di chuyển
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
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.
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
Để 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
rails g
và rails d
.
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
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:
rails d scaffold FooBar
rake db:rollback
if you_had_run_ rake db:migrate
sau khi tạo giàn giáo ở trên?Đó là nó!
Chúc mừng!
Đề 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.
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
Vâng, scaffold
chính nó và tất cả những điều hợp nhất nó.
Các destroy
lệ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 generate
nó 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
Để 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
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
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.
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ủy và g để tạo như một phím tắt.
rails g scaffold MyFoo
để tạo và
rails d scaffold MyFoo
để loại bỏ