Trước Rails 7.1
Trước Rails 7.1 Select và reselect chỉ nhận :symbol, ‘string’, ‘raw, query’. Khi muốn select các trường trong bảng quan hệ thì phải joins bảng và select bằng raw query.
# select thường User.select(:user_name, :staff_code) # select trường trong bảng quan hệ User.joins(:department).select('users.user_name, users.staff_code, departments.department_name')
Sau Rails 7.1
Sau Rails 7.1 Select và reselect đã chấp nhận đầu vào là hash. Câu query với bảng quan hệ giờ sẽ thành như sau:
User.joins(:department).select(users: [:user_name, :staff_code], department: [:department_name])
- Note: Reselect là lệnh để viết đè lên lệnh select
VD: User.select(:staff_code, :user_name).reselect(:staff_code) thì sẽ chỉ trả về { id, staff_code } thôi.