วิธีการย้อนกลับ 'รางสร้าง'


471

ฉันต้องการลบไฟล์ทั้งหมดที่สร้างขึ้นและย้อนกลับการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้น แต่ไม่จำเป็นต้องไปที่ฐานข้อมูล แต่เพิ่มเติมกับไฟล์ปรับแต่ง

ฉันต้องการลบการแมปทรัพยากรทั้งหมดโดยอัตโนมัติสำหรับตัวแบบ / ตัวควบคุมที่ถูกลบในไฟล์ route.rb และที่อื่น ๆ ที่อาจมีการเปลี่ยนแปลงหรือไม่

คำตอบ:


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

Rails 3.2 เพิ่มdทางลัดใหม่ให้กับคำสั่งดังนั้นตอนนี้คุณสามารถเขียน:

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

1
Btw ฉันจะใช้คำสั่งนี้เพื่อลบฐานข้อมูลได้อย่างไร รูปแบบและตัวควบคุมทำงานได้ดี ... แต่ฉันจะกลับไปนั่งร้านได้อย่างไร?
marcamillion

6
ตกลงฉันคิดออก บางทีฉันอาจพิมพ์ผิด ฉันเพิ่งวิ่งrails destroy scaffold lalalalและใช้งานได้
marcamillion

38
@marcamillion ต้องเป็นพิเศษนั่นคือ 'L'
varatis

1
สิ่งที่เกี่ยวกับการลบไฟล์ที่เกี่ยวข้องกับอัญมณีติดตั้งเช่นrails generate <gemname>:install
ดั๊ก

2
@doug ฉันไม่คิดว่าเป็นไปได้ ทางออกที่ดีที่สุดของคุณคือเพียงรันตัวสร้างใหม่ด้วยการ-fตั้งค่าสถานะเพื่อบังคับให้สร้าง / reedit ไฟล์อีกครั้ง ... จากนั้นคุณจะเห็นไฟล์ที่สร้าง / เปลี่ยนแปลงไฟล์และดำเนินการลบด้วยตนเอง
Fábio Batista

49

เป็นมูลค่าการกล่าวขวัญ-pธงที่นี่ ("p" สำหรับแกล้ง )

หากคุณเพิ่มสิ่งนี้ลงในคำสั่งมันจะทำการ "ทดสอบ" และแสดงให้คุณเห็นว่าไฟล์ใดที่จะถูกลบโดยไม่ต้องลบทิ้งจริงๆ

$ 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

หากคุณพอใจกับมันให้รันคำสั่งอีกครั้งโดยไม่มีการ-pตั้งค่าสถานะ


ฉันคิดว่านี่เป็นคำตอบที่ดีที่สุด
Emil Reña Enriquez

24

rails destroy controller Controller_nameกำลังส่งคืนข้อผิดพลาดจำนวนมาก เพื่อให้สามารถทำลายคอนโทรลเลอร์ได้ฉันต้องลบเส้นทางที่เกี่ยวข้องใน route.rb ป.ล. ฉันใช้ราง 3.1


โปรดอย่าสรุปการกระทำของคุณเว้นแต่คุณตั้งใจจะให้คำตอบนี้เป็นคำตอบที่ถูกต้องที่เลือก
ชายดีบุก

11

นี่คือต้นแบบเพื่อสร้างหรือทำลายคอนโทรลเลอร์หรือโมเดลใน Rails:

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

ตัวอย่างเช่นหากคุณต้องการสร้างตัวควบคุมผู้ใช้:

rails generate controller User

หรือ

rails g controller User

หากคุณต้องการทำลายตัวควบคุมผู้ใช้หรือย้อนกลับไปสู่การกระทำข้างต้นให้ใช้:

rails destroy controller User

หรือ:

rails d controller User

ป้อนคำอธิบายรูปภาพที่นี่


4

คุณสามารถใช้rails d model/controller/migration ...เพื่อทำลายหรือลบการเปลี่ยนแปลงที่สร้างขึ้นโดยใช้rails generateคำสั่ง

ตัวอย่างเช่น:

rails g model Home name:string

สร้างรูปแบบการตั้งชื่อที่มีคุณลักษณะhome nameในการลบไฟล์และรหัสที่สร้างจากคำสั่งนั้นเราสามารถใช้

rails d model Home

3

คุณสามารถทำลายทุกสิ่งที่สร้างขึ้นในแบบเดียวกันยกเว้นการเปลี่ยนแปลงเล็ก ๆ น้อย ๆ สำหรับตัวควบคุม

rails d controller_name (d stands for destroy)

สำหรับรุ่น

rails d model_name

คุณเพิ่งใส่d(destroy)แทนการg(generate)โยกย้ายของคุณ


3

หากคุณต้องการลบคอนโทรลเลอร์ด้วยตนเอง:

สำหรับตัวควบคุม 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

สมมติว่าฉันได้สร้างตัวควบคุมชื่อ "ตัวอย่าง" ที่ชอบ:

rails generate controller sample

ถ้าฉันจะต้องทำลายตัวควบคุมนี้ทั้งหมดที่ฉันต้องทำคือการแลกเปลี่ยนgenerateด้วยdestroyเช่นเดียวกับใน

rails destroy controller sample.

หากคุณต้องการที่จะกลับรุ่นทั้งหมดที่คุณต้องทำคือการแลกเปลี่ยน กับgeneratedestroy


3

ถ้าคุณใช้ Rails rails d controller Usersใช้

zeus d controller Usersและถ้าหากคุณใช้ซุสใช้

ในทางกลับกันหากคุณใช้ git หรือ SVN ให้ยกเลิกการเปลี่ยนแปลงของคุณด้วยหมายเลขการส่งคืน มันเร็วกว่ามาก


3

คุณสามารถเลิกทำrails generateในวิธีต่อไปนี้:

  • สำหรับรูปแบบ: rails destroy MODEL
  • สำหรับตัวควบคุม: rails destroy controller_name

1

เพื่อย้อนกลับนั้นเราเพิ่งทำลายมัน เปิดแอปพลิเคชัน Terminal และไปที่ไดเรกทอรีโครงการจากนั้นพิมพ์:

rails destroy model CamelCase
rails destroy controller CamelCase

CamelCaseชื่อรุ่นหรือคอนโทรลเลอร์ใดอยู่ที่ไหน มันจะลบรูปแบบการโยกย้ายและไฟล์ทดสอบที่เกี่ยวข้องบางส่วน (คุณสามารถเห็นผลลัพธ์ในหน้าต่างเทอร์มินัลหลังจากที่คุณเรียกใช้คำสั่ง)


0

rails generate appเราใช้สร้างเป็น ดังนั้นการสร้างgenerateคำสั่งใหม่สามารถกลับรายการโดยใช้destroyคำสั่ง เพียงแค่แทนที่generateด้วยdestroy เช่น rails generate appสามารถเขียนเป็นทาง rails destroy app' รถไฟสร้าง ____ asรางทำลาย ____ `



0

ก่อนที่จะคืนค่าrails generateโปรดตรวจสอบให้แน่ใจว่าคุณย้อนกลับการโยกย้ายก่อน

กรณีที่ 1: หากคุณต้องการเปลี่ยนโครงสร้างเดิมให้รันคำสั่งนี้:

rails destroy scaffold MODEL_NAME

กรณีที่ 2: หากคุณต้องการเปลี่ยนรุ่นให้รันคำสั่งนี้:

rails destroy model MODEL_NAME

กรณีที่ 3: หากคุณต้องการเปลี่ยนกลับคอนโทรลเลอร์ให้รันคำสั่งนี้:

rails destroy controller CONTROLLER_NAME

หมายเหตุ: คุณยังสามารถใช้ทางลัดแทนddestroy



0

Rails ทุกรุ่นมี "destroy" ดังนั้น - หากคุณสร้าง scaffold ที่ชื่อ "task" โดยใช้ generator เพื่อทำลายการเปลี่ยนแปลงทั้งหมดของขั้นตอนการสร้างนั้นคุณจะต้องพิมพ์:

rails destroy scaffold Tasks

หวังว่ามันจะช่วยคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.