Rails 7.1 cho phép select và reselect nhận vào hash value

Đăng bởi Lưu Đại vào ngày 18-12-2022

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.