
Truy vấn ActiveRecord nâng cao
Query interface, where, joins, includes, eager loading, vấn đề N+1, transactions, locking (optimistic/pessimistic)
1Phương thức ActiveRecord nào lấy một bản ghi theo primary key của nó và ném ra ngoại lệ nếu không tìm thấy?
Phương thức ActiveRecord nào lấy một bản ghi theo primary key của nó và ném ra ngoại lệ nếu không tìm thấy?
Câu trả lời
Phương thức find lấy một bản ghi theo primary key của nó và ném ra ngoại lệ ActiveRecord::RecordNotFound nếu bản ghi không tồn tại. Điều này đảm bảo code thất bại một cách rõ ràng thay vì tiếp tục với giá trị nil. Để tránh ngoại lệ và trả về nil thay thế, hãy dùng find_by(id: value).
2Sự khác biệt chính giữa find_by và where.first trong ActiveRecord là gì?
Sự khác biệt chính giữa find_by và where.first trong ActiveRecord là gì?
Câu trả lời
find_by trả về trực tiếp một bản ghi đơn hoặc nil, trong khi where.first trả về một relation ActiveRecord rồi gọi first để lấy kết quả đầu tiên. Trên thực tế, find_by tạo ra một truy vấn được tối ưu hóa với LIMIT 1, trong khi where có thể tải nhiều dữ liệu hơn trước khi chọn phần tử đầu tiên.
3Làm thế nào để truyền nhiều điều kiện cho phương thức where trong ActiveRecord?
Làm thế nào để truyền nhiều điều kiện cho phương thức where trong ActiveRecord?
Câu trả lời
Phương thức where chấp nhận một hash với nhiều khóa để chỉ định nhiều điều kiện sẽ được kết hợp bằng AND. Ví dụ, User.where(status: 'active', role: 'admin') tạo ra WHERE status = 'active' AND role = 'admin'. Đối với điều kiện OR, hãy dùng or hoặc truy vấn SQL thô.
Vấn đề N+1 trong ActiveRecord là gì?
Nên dùng phương thức nào để giải quyết vấn đề N+1 bằng cách tải trước các association?
+25 câu hỏi phỏng vấn
Các chủ đề phỏng vấn Ruby on Rails khác
Kiến thức cơ bản về Ruby
Lập trình hướng đối tượng trong Ruby
Kiến thức cơ bản về Rails
Routing & Controllers
Kiến thức cơ bản về ActiveRecord
Views & Template ERB
Liên kết ActiveRecord
Form Rails
Xác thực & Phân quyền
Asset Pipeline hiện đại & frontend
Chế độ API của Rails
Kiểm thử với RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Chiến lược Caching
Migration nâng cao
Rails Engines & ứng dụng mô-đun
Tối ưu hóa hiệu năng
Design Patterns trong Rails
Lập trình meta trong Ruby
Bảo mật Rails
GraphQL với Rails
Triển khai & Sản xuất
Monitoring & Logging
Chiến lược nâng cấp Rails
Nắm vững Ruby on Rails cho lần phỏng vấn tiếp theo
Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.
Bắt đầu miễn phí