---
title: "ruby on rails | Today I Learned | OOZOU"
description: "โน้ตสั้นใช้ได้จริงเกี่ยวกับ ruby on rails จากทีม OOZOU"
canonical: https://oozou.com/th/til-topics/ruby-on-rails
locale: th
---

# ruby on rails | Today I Learned

> โน้ตสั้นใช้ได้จริงเกี่ยวกับ ruby on rails จากทีม OOZOU

- [ใช้ Pundit Policy จัดการ permitted parameters ทั้งค่า default และแยกราย action](https://oozou.com/th/til/use-pundit-policies-to-manage-permitted-parameters-defaults-and-per-action-188) ([markdown](https://oozou.com/th/til/use-pundit-policies-to-manage-permitted-parameters-defaults-and-per-action-188.md)) (2022-02-10): จัดการ permitted params ได้ด้วยการเพิ่ม permitted\attributes และ permitted\attributes\for\#{action} ใน policy เช่น
- [ใช้ `requestSubmit` สำหรับการ submit form ร่วมกับ Turbo](https://oozou.com/th/til/use-requestsubmit-for-form-submits-with-turbo-155) ([markdown](https://oozou.com/th/til/use-requestsubmit-for-form-submits-with-turbo-155.md)) (2022-01-31): Turbo คอยฟัง event submit ที่เกิดขึ้นบน form ดังนั้นให้ใช้ requestSubmit เสมอเมื่อจะ submit form ด้วย JS
- [ให้ Rubocop และ ESLint ignore gem ที่ bundle ไว้ใน GitHub Actions](https://oozou.com/th/til/ignore-bundled-gems-for-rubocop-and-eslint-in-github-actions-154) ([markdown](https://oozou.com/th/til/ignore-bundled-gems-for-rubocop-and-eslint-in-github-actions-154.md)) (2022-01-19): โปรเจกต์ Rails มักติดตั้ง gem ลงใน vendor directory ใน GitHub actions เพื่อให้ cache ไว้ใช้ในรอบถัด ๆ ไปได้
- [Rails 6, Ruby 3, Bootstrap 5 และ Hotwire](https://oozou.com/th/til/rails-6-ruby-3-bootstrap-5-and-hotwire-115) ([markdown](https://oozou.com/th/til/rails-6-ruby-3-bootstrap-5-and-hotwire-115.md)) (2021-04-18): ต่อยอด blogpost ของ Bootrails ด้วย Hotwire:   ของใหม่สุดเท่ทั้งหมด (ณ ตอนที่เขียน TIL นี้):
- [Rails Cache-Control](https://oozou.com/th/til/rails-cache-control-77) ([markdown](https://oozou.com/th/til/rails-cache-control-77.md)) (2020-10-27): สำหรับเปิดการตั้งค่า header cache-control ของ static asset และการใช้ CDN บน Heroku:
- [แก้ปัญหา input ใน rails console บน Heroku](https://oozou.com/th/til/fix-input-on-heroku-s-rails-console-73) ([markdown](https://oozou.com/th/til/fix-input-on-heroku-s-rails-console-73.md)) (2020-10-14): ถ้าคุณวางโค้ดหลายบรรทัดลงใน rails console บน Heroku (หรือที่อื่น) อาจเจอปัญหาบรรทัด "เบียด" ทับกัน
- [ID ที่ไม่ซ้ำกันสำหรับ DOM ใน Rails](https://oozou.com/th/til/unique-id-for-dom-in-rails-75) ([markdown](https://oozou.com/th/til/unique-id-for-dom-in-rails-75.md)) (2020-10-14): Rails มี view helper ดี ๆ อยู่มากมาย หนึ่งในนั้นคือ dom\id:*
- [เพิ่ม type ใหม่ให้กับ attributes API ของ Rails 5](https://oozou.com/th/til/add-new-types-to-rails-5-attributes-api-13) ([markdown](https://oozou.com/th/til/add-new-types-to-rails-5-attributes-api-13.md)) (2020-10-13): attributes API ของ Rails 5 ช่วยให้เราสร้าง form object ได้ง่ายมาก
- [แนบไฟล์เข้า ActiveStorage โดยไม่ผ่าน HTTP](https://oozou.com/th/til/attaching-file-to-activestorage-without-http-19) ([markdown](https://oozou.com/th/til/attaching-file-to-activestorage-without-http-19.md)) (2020-10-13): ถ้าคุณต้องการแนบไฟล์ที่สร้างไว้บนดิสก์ หรือไฟล์ที่ดาวน์โหลดมาจาก URL ที่ผู้ใช้ส่งเข้ามา ทำได้แบบนี้
- [สร้าง Hash จาก Enumerable (Rails 6.0)](https://oozou.com/th/til/create-a-hash-from-an-enumerable-rails-6-0-6) ([markdown](https://oozou.com/th/til/create-a-hash-from-an-enumerable-rails-6-0-6.md)) (2020-10-13): method ใหม่ที่ช่วยให้คุณสร้าง Hash จาก Enumerable ได้:
- [เขียน migration ให้เป็น idempotent](https://oozou.com/th/til/create-idempotent-migrations-28) ([markdown](https://oozou.com/th/til/create-idempotent-migrations-28.md)) (2020-10-13): เมื่อต้องเขียน migration แบบทำลายข้อมูล ให้ใช้ if_exists: true ตอนที่จะลบตาราง และตรวจสอบก่อนว่าตารางมีอยู่จริงเมื่อต้องการเพิ่มหรือลบคอลัมน์…
- [วิธีหา god object ในโปรเจกต์ (Rails)](https://oozou.com/th/til/how-to-find-god-objects-in-your-project-rails-40) ([markdown](https://oozou.com/th/til/how-to-find-god-objects-in-your-project-rails-40.md)) (2020-10-13): ไปที่ root ของโปรเจกต์แล้ว cd เข้าไปที่ app/models (ผ่าน CLI แน่นอน) จากนั้นรัน wc -lw \ | sort -u*
- [HTML form ที่ submit ไปยัง action อื่น](https://oozou.com/th/til/html-forms-that-submit-to-another-action-10) ([markdown](https://oozou.com/th/til/html-forms-that-submit-to-another-action-10.md)) (2020-10-13): รู้มานานแล้วว่าเราส่งค่าไปพร้อมกับปุ่ม submit ได้ ทำให้ track ได้ว่า form ถูก submit ด้วยปุ่มไหน เช่น
- [ถ้าอยาก override order ที่ตั้งไว้ก่อนหน้า](https://oozou.com/th/til/if-you-want-to-override-previously-set-order-25) ([markdown](https://oozou.com/th/til/if-you-want-to-override-previously-set-order-25.md)) (2020-10-13): ถ้าอยาก override order ที่ตั้งไว้ก่อนหน้า (แม้จะถูกตั้งผ่าน default\_scope) ให้ใช้ reorder() แทน
- [จำกัดจำนวน has_many association](https://oozou.com/th/til/limited-has_many-associations-31) ([markdown](https://oozou.com/th/til/limited-has_many-associations-31.md)) (2020-10-13): จำกัดจำนวน has_many association
- [ลิสต์ชื่อ model ทั้งหมด](https://oozou.com/th/til/list-your-model-names-58) ([markdown](https://oozou.com/th/til/list-your-model-names-58.md)) (2020-10-13): หมายเหตุ: RUBYOPT=-W0 ช่วยลดความ verbose ตอนรันคำสั่ง rails เพราะมันจะ suppress warning
- [ฟังก์ชัน Postgres กับ Query แบบ Non-sargable](https://oozou.com/th/til/postgres-functions-non-sargable-queries-48) ([markdown](https://oozou.com/th/til/postgres-functions-non-sargable-queries-48.md)) (2020-10-13): การใช้ฟังก์ชันของ postgres ใน where clause อาจทำให้ query กลายเป็น non-sargable
- [PostgreSQL UPDATE Join ](https://oozou.com/th/til/postgresql-update-join-64) ([markdown](https://oozou.com/th/til/postgresql-update-join-64.md)) (2020-10-13): query นี้แสดงวิธีใช้ syntax UPDATE join ของ PostgreSQL เพื่ออัปเดตข้อมูลในตารางหนึ่งโดยอิงจากค่าในอีกตารางหนึ่ง ตัวอย่างเช่น
- [Scope or scope ใน Rails](https://oozou.com/th/til/scope-or-scope-in-rails-11) ([markdown](https://oozou.com/th/til/scope-or-scope-in-rails-11.md)) (2020-10-13): scope :human, -> { user.or(author) } scope :terminator, -> { admin.or(robot) } `
- [แสดง TODO และโน้ตอื่น ๆ ใน Rails app](https://oozou.com/th/til/show-todo-and-other-notes-in-your-rails-app-7) ([markdown](https://oozou.com/th/til/show-todo-and-other-notes-in-your-rails-app-7.md)) (2020-10-13): รู้ไหมว่า rails notes แสดง TODO/OPTIMIZE/FIXME ทั้งหมดใน rails app ได้?
- [Tag log ของ rails ด้วยข้อมูลที่มีประโยชน์](https://oozou.com/th/til/tag-rails-logs-with-useful-information-32) ([markdown](https://oozou.com/th/til/tag-rails-logs-with-useful-information-32.md)) (2020-10-13): เพิ่งได้รู้จัก tagged logging ใน rails รู้ไหมว่าคุณ tag log ได้แบบนี้
- [ใช้ minItems/maxItems ใน JSON schema แบบ collection](https://oozou.com/th/til/use-minitems-maxitems-in-collection-json-schemas-1) ([markdown](https://oozou.com/th/til/use-minitems-maxitems-in-collection-json-schemas-1.md)) (2020-10-13): เพื่อให้ JSON schema แบบ collection น่าเชื่อถือยิ่งขึ้น ให้ใช้ minItems และ maxItems เพื่อให้คุณไว้ใจ API ของตัวเองได้

All notes: [Today I Learned](https://oozou.com/th/til) ([markdown](https://oozou.com/th/til.md)).

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/th/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
