Cách đảo ngược 'đường ray tạo'


471

Tôi muốn xóa tất cả các tệp mà nó đã tạo và khôi phục mọi thay đổi đã thực hiện, nhưng không nhất thiết phải là cơ sở dữ liệu, mà hơn thế nữa là các tệp cấu hình.

Tôi muốn tự động xóa tất cả ánh xạ tài nguyên cho mô hình / bộ điều khiển đã bị xóa trong tệp Rout.rb và mọi nơi khác có thể thay đổi?

Câu trả lời:


929
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho

Rails 3.2 thêm một dlối tắt mới cho lệnh, vì vậy bây giờ bạn có thể viết:

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho

1
Btw, làm thế nào để tôi sử dụng lệnh này để xóa một giàn giáo? Mô hình và bộ điều khiển hoạt động tốt ... nhưng làm cách nào để đảo ngược hoàn toàn một giàn giáo?
marcamillion

6
Ok, tôi đã tìm ra nó. Có lẽ tôi đã nhầm lẫn một cái gì đó. Tôi chỉ chạy rails destroy scaffold lalalalvà điều đó đã làm việc.
marcamillion

38
@marcamillion Phải là thêm 'L'.
varatis

1
Điều gì về việc xóa các tệp được liên kết với cài đặt đá quý, chẳng hạn nhưrails generate <gemname>:install
doug

2
@doug, tôi không nghĩ điều đó là có thể. Cách tốt nhất của bạn là chỉ cần chạy lại trình tạo với -fcờ để buộc nó tạo lại / xác nhận lại các tập tin. Sau đó, bạn có thể xem những tập tin nào được tạo / thay đổi và tiến hành xóa chúng theo cách thủ công.
Fábio Batista

49

Thật đáng để đề cập đến -pcờ ở đây ("p" để giả vờ ).

Nếu bạn thêm lệnh này vào lệnh, nó sẽ chỉ chạy "kiểm tra" và cho bạn thấy những tập tin nào sẽ bị xóa mà không thực sự xóa chúng.

$ rails d controller welcome -p

  remove  app/controllers/welcome_controller.rb
  invoke  erb
  remove    app/views/welcome
  invoke  test_unit
  remove    test/controllers/welcome_controller_test.rb
  invoke  helper
  remove    app/helpers/welcome_helper.rb
  invoke    test_unit
  remove      test/helpers/welcome_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/welcome.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/welcome.css.scss

Nếu bạn hài lòng với nó, hãy chạy lại lệnh mà không cần -pcờ.


Tôi nghĩ rằng đây là câu trả lời tốt nhất
Emil Reña Enriquez

24

rails destroy controller Controller_nameđã trả lại một loạt các lỗi. Để có thể phá hủy bộ điều khiển, tôi đã phải loại bỏ các tuyến liên quan trong Rout.rb. PS Tôi đang sử dụng đường ray 3.1


Vui lòng không tóm tắt hành động của bạn trừ khi bạn có ý định cho câu trả lời này là câu trả lời đúng được chọn.
Tin Man

11

Đây là nguyên mẫu để tạo hoặc hủy bộ điều khiển hoặc mô hình trong Rails:

rails generate/destroy controller/model [controller/model Name]

Ví dụ: nếu bạn cần tạo Trình điều khiển người dùng:

rails generate controller User

hoặc là

rails g controller User

Nếu bạn muốn hủy Trình điều khiển người dùng hoặc hoàn nguyên về hành động trên thì hãy sử dụng:

rails destroy controller User

hoặc là:

rails d controller User

nhập mô tả hình ảnh ở đây


4

Bạn có thể sử dụng rails d model/controller/migration ...để hủy hoặc xóa các thay đổi được tạo bằng cách sử dụng rails generatelệnh.

Ví dụ:

rails g model Home name:string

tạo một mô hình có tên homevới thuộc tính name. Để loại bỏ các tập tin và mã được tạo ra từ lệnh đó, chúng ta có thể sử dụng

rails d model Home

3

Bạn có thể phá hủy tất cả những thứ được tạo ra theo cùng một cách trừ sự thay đổi nhỏ. Đối với bộ điều khiển,

rails d controller_name (d stands for destroy)

Dành cho người mẫu

rails d model_name

bạn chỉ cần đặt d(destroy)thay vì g(generate)trong di chuyển của bạn.


3

Nếu bạn muốn xóa bộ điều khiển bằng tay:

Đối với bộ điều khiển welcome

rm app/controllers/welcome_controller.rb
rm app/views/welcome
rm test/controllers/welcome_controller_test.rb
rm app/helpers/welcome_helper.rb
rm test/helpers/welcome_helper_test.rb
rm app/assets/javascripts/welcome.js.coffee
rm app/assets/stylesheets/welcome.css.scss

3

Bạn có thể hoàn nguyên

rails g/generate controller/model/migration xxx

đầu ra bằng cách sử dụng:

 rails d/destroy controller/model/migration xxx

3

Giả sử tôi đã tạo một bộ điều khiển có tên "mẫu" như:

rails generate controller sample

Nếu tôi phải phá hủy bộ điều khiển này, tất cả những gì tôi phải làm là trao đổi generatevới destroy, như trong

rails destroy controller sample.

Nếu bạn muốn đảo ngược thế hệ, tất cả những gì bạn phải làm là trao đổi generatevới destroy.


3

Nếu bạn sử dụng Rails, sử dụng rails d controller Users.

Và, nếu bạn sử dụng Zeus, hãy sử dụng zeus d controller Users.

Mặt khác, nếu bạn đang sử dụng git hoặc SVN, hãy hoàn nguyên các thay đổi của bạn bằng số cam kết. Điều này nhanh hơn nhiều.


3

Bạn có thể hoàn tác một rails generatetrong các cách sau:

  • Đối với mô hình: rails destroy MODEL
  • Đối với bộ điều khiển: rails destroy controller_name

1

Để đảo ngược điều đó, chúng tôi chỉ cần phá hủy nó. Mở ứng dụng Terminal và vào thư mục dự án, sau đó, gõ vào đây:

rails destroy model CamelCase
rails destroy controller CamelCase

Đâu CamelCaselà tên của bất kỳ mô hình hoặc bộ điều khiển. Nó sẽ loại bỏ mô hình, di chuyển và một số tệp thử nghiệm liên quan. (Bạn có thể thấy kết quả trong cửa sổ Terminal sau khi bạn đã chạy lệnh.)


0

Chúng tôi sử dụng tạo như rails generate app. Vì vậy, tái tạo bất kỳ generatecâu lệnh nào có thể được đảo ngược bằng cách sử dụng destroycâu lệnh. Chỉ cần thay thế generatebằng destroy tức là rails generate appcó thể được viết dưới dạng rails destroy app' đường ray tạo ra ____ asđường ray phá hủy ____ `


0

Loại bỏ giàn giáo cho mô hình đã chọn:

bin/rails d scaffold <AccessControl> //model name

0

Trước khi hoàn nguyên rails generate, vui lòng đảm bảo bạn quay lại di chuyển trước.

Trường hợp 1: nếu bạn muốn hoàn nguyên giàn giáo thì hãy chạy lệnh này:

rails destroy scaffold MODEL_NAME

Trường hợp 2: nếu bạn muốn hoàn nguyên mô hình thì hãy chạy lệnh này:

rails destroy model MODEL_NAME

Trường hợp 3: nếu bạn muốn hoàn nguyên bộ điều khiển thì hãy chạy lệnh này:

rails destroy controller CONTROLLER_NAME

Lưu ý: bạn cũng có thể sử dụng phím tắt dthay vì destroy.



0

Tất cả các phiên bản đường ray đều có "hủy", vì vậy, nếu bạn tạo một (ví dụ) giàn giáo có tên là "tác vụ" bằng cách sử dụng trình tạo, để phá hủy tất cả các thay đổi của bước tạo đó, bạn sẽ phải nhập:

rails destroy scaffold Tasks

Hy vọng nó sẽ giúp bạn.

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.