ในราง> 4.0.0 ปั่นไฟสร้างการดำเนินงาน CRUD ด้วยไม่ได้before_action
before_filter
ดูเหมือนว่าจะทำในสิ่งเดียวกัน ดังนั้นความแตกต่างระหว่างสองสิ่งนี้คืออะไร?
ในราง> 4.0.0 ปั่นไฟสร้างการดำเนินงาน CRUD ด้วยไม่ได้before_action
before_filter
ดูเหมือนว่าจะทำในสิ่งเดียวกัน ดังนั้นความแตกต่างระหว่างสองสิ่งนี้คืออะไร?
คำตอบ:
ในฐานะที่เราสามารถมองเห็นในActionController::Base
, before_action
เป็นเพียงไวยากรณ์ใหม่before_filter
สำหรับ
อย่างไรก็ตามbefore_filters
ไวยากรณ์ทั้งหมดจะถูกคัดค้านในRails 5.0และจะถูกลบในRails 5.1
มันเป็นเพียงความแตกต่างไวยากรณ์ในราง app มี CRUD เจ็ดและการกระทำโดยทั่วไปโดยชื่อดัชนี , ใหม่ , สร้าง , การแสดง , การปรับปรุง , แก้ไข , ทำลาย
ราง 4 มันทำให้นักพัฒนาที่เป็นมิตรกับไวยากรณ์การเปลี่ยนแปลงก่อนที่จะกรองไปก่อนที่จะดำเนินการ
before_actionวิธีการโทรก่อนการกระทำที่เราประกาศเช่น
before_action :set_event, only: [:show, :update, :destroy, :edit]
set_eventเป็นวิธีการที่จะเรียกเสมอก่อนที่จะแสดงปรับปรุงแก้ไขและทำลาย
มันเป็นเพียงการเปลี่ยนชื่อ before_action
มีความเฉพาะเจาะจงมากขึ้นเพราะได้รับการดำเนินการก่อนการกระทำ
before_filter / before_action: หมายถึงสิ่งใด ๆ ที่จะถูกเรียกใช้ก่อนที่การกระทำใด ๆ จะดำเนินการ
ทั้งสองเหมือนกัน พวกเขาเป็นเพียงนามแฝงซึ่งกันและกันเพราะพฤติกรรมของพวกเขาเหมือนกัน
หากต้องการทราบความแตกต่างระหว่าง before_action และ before_filter เราควรเข้าใจความแตกต่างระหว่างการกระทำและตัวกรอง
การกระทำเป็นวิธีการควบคุมที่คุณสามารถกำหนดเส้นทางไปยัง ตัวอย่างเช่นหน้าการสร้างผู้ใช้ของคุณอาจถูกส่งไปยัง UsersController # ใหม่ - ใหม่เป็นการดำเนินการในเส้นทางนี้
ตัวกรองทำงานในส่วนที่เกี่ยวกับการกระทำของคอนโทรลเลอร์ - ก่อนหลังหรือรอบตัว วิธีการเหล่านี้สามารถหยุดการประมวลผลการกระทำได้โดยการเปลี่ยนเส้นทางหรือตั้งค่าข้อมูลทั่วไปไปยังทุกการกระทำในคอนโทรลเลอร์
ราง 4 -> _action
ราง 3 -> _filter