ruby on rails
บันทึกเกี่ยวกับ ruby on rails จำนวน 22 รายการ จากทีม OOZOU
ใช้ Pundit Policy จัดการ permitted parameters ทั้งค่า default และแยกราย action
ในการจัดการ permitted params คุณสามารถเพิ่ม permitted\attributes และ permitted\attributes\for\#{action} ใน policy ของคุณได้ เช่น
ใช้ `requestSubmit` สำหรับการ submit form ร่วมกับ Turbo
Turbo คอยฟัง event submit ที่เกิดขึ้นบน form ดังนั้นให้ใช้ requestSubmit เสมอเมื่อจะ submit form ด้วย JS
ให้ Rubocop และ ESLint ignore gem ที่ bundle ไว้ใน GitHub Actions
โปรเจกต์ Rails มักติดตั้ง gem ลงใน vendor directory ใน GitHub actions เพื่อให้ cache ไว้ใช้ในรอบถัด ๆ ไปได้
Rails 6, Ruby 3, Bootstrap 5 และ Hotwire
ต่อยอด blogpost ของ Bootrails ด้วย Hotwire: ของใหม่สุดเท่ทั้งหมด (ณ ตอนที่เขียน TIL นี้):
Rails Cache-Control
สำหรับเปิดการตั้งค่า header cache-control ของ static asset และการใช้ CDN บน Heroku:
แก้ปัญหา input ใน rails console บน Heroku
ถ้าคุณวางโค้ดหลายบรรทัดลงใน rails console บน Heroku (หรือที่อื่น) อาจเจอปัญหาบรรทัด "เบียด" ทับกัน
ID ที่ไม่ซ้ำกันสำหรับ DOM ใน Rails
Rails มี view helper ดี ๆ อยู่มากมาย หนึ่งในนั้นคือ dom\id:*
เพิ่ม type ใหม่ให้กับ attributes API ของ Rails 5
attributes API ของ Rails 5 ช่วยให้เราสร้าง form object ได้ง่ายมาก
แนบไฟล์เข้า ActiveStorage โดยไม่ผ่าน HTTP
ถ้าคุณต้องการแนบไฟล์ที่สร้างไว้บนดิสก์ หรือไฟล์ที่ดาวน์โหลดมาจาก URL ที่ผู้ใช้ส่งเข้ามา ทำได้แบบนี้
สร้าง Hash จาก Enumerable (Rails 6.0)
method ใหม่ที่ช่วยให้คุณสร้าง Hash จาก Enumerable ได้:
เขียน migration ให้เป็น idempotent
เมื่อต้องเขียน migration แบบทำลายข้อมูล ให้ใช้ if_exists: true ตอนที่จะลบตาราง และตรวจสอบก่อนว่าตารางมีอยู่จริงเมื่อต้องการเพิ่มหรือลบคอลัมน์…
วิธีหา god object ในโปรเจกต์ของคุณ (Rails)
ไปที่ root ของโปรเจกต์แล้ว cd เข้าไปที่ app/models (ผ่าน CLI แน่นอน) จากนั้นรัน wc -lw \ | sort -u*
HTML form ที่ submit ไปยัง action อื่น
รู้มานานแล้วว่าเราส่งค่าไปพร้อมกับปุ่ม submit ได้ ทำให้ track ได้ว่า form ถูก submit ด้วยปุ่มไหน เช่น
ถ้าอยาก override order ที่ตั้งไว้ก่อนหน้า
ถ้าอยาก override order ที่ตั้งไว้ก่อนหน้า (แม้จะถูกตั้งผ่าน default\_scope) ให้ใช้ reorder() แทน
จำกัดจำนวน has_many association
จำกัดจำนวน has_many association
ลิสต์ชื่อ model ทั้งหมดของคุณ
หมายเหตุ: RUBYOPT=-W0 ช่วยลดความ verbose ตอนรันคำสั่ง rails เพราะมันจะ suppress warning
ฟังก์ชัน Postgres กับ Query แบบ Non-sargable
การใช้ฟังก์ชันของ postgres ใน where clause อาจทำให้ query กลายเป็น non-sargable
PostgreSQL UPDATE Join
query นี้แสดงวิธีใช้ syntax UPDATE join ของ PostgreSQL เพื่ออัปเดตข้อมูลในตารางหนึ่งโดยอิงจากค่าในอีกตารางหนึ่ง ตัวอย่างเช่น
Scope or scope ใน Rails
scope :human, -> { user.or(author) } scope :terminator, -> { admin.or(robot) } `
แสดง TODO และโน้ตอื่น ๆ ใน Rails app ของคุณ
รู้ไหมว่าคุณสามารถแสดง TODO/OPTIMIZE/FIXME ทั้งหมดใน rails app ของคุณได้ด้วย rails notes?
Tag log ของ rails ด้วยข้อมูลที่มีประโยชน์
เพิ่งได้เรียนรู้เรื่อง tagged logging ใน rails รู้ไหมว่าคุณสามารถ tag log ได้โดยใช้
ใช้ minItems/maxItems ใน JSON schema แบบ collection
เพื่อให้ JSON schema แบบ collection ของคุณน่าเชื่อถือยิ่งขึ้น ให้ใช้ minItems และ maxItems เพื่อให้คุณไว้ใจ API ของตัวเองได้