我平常在使用 Rails 開發的時候,時常搞不清楚要用那些查詢語句,整理了一下分享給大家!
我們可以透過 find 透過主key值查找單個紀錄。例如 :
# 根據用戶 ID 查找用戶記錄
@user = User.find(1) # 查找用戶ID為1的記錄
可以透過特定條件查找單個紀錄。例如 :
# 根據電子郵件地址查找用戶記錄
@user = User.find_by(email: 'example@example.com') # 查找特定電子郵件地址的用戶記錄
預加載關聯的數據,避免 N+1查詢問題。
@users = User.includes(:orders) # 預加載用戶的訂單數據
用於查詢滿足特定條件的紀錄。
# 查找價格低於 50 的產品
@cheap_products = Product.where("price < ?", 50)
提取特定列的數據。
@user_names = User.where(status: 'active').pluck(:name) # 提取所有狀態為 'active' 的用戶的名字
排序紀錄。
@products = Product.order(:price) # 按價格升序排序產品
@products = Product.order(:price :desc) # 按價格降冪排序產品
對紀錄進行分組
@orders = Order.group(:user_id) # 按用戶 ID 分組訂單記錄
計算紀錄的數量
@active_users_count = User.where(status: 'active').count # 計算狀態為 'active' 的用戶數量
計算數值列的總和、平局值
@total_sales = Order.sum(:total_amount) # 計算所有訂單的總銷售額
@average_rating = Product.average(:rating) # 計算所有產品的平均評分
連接不同的表進行查詢
@users_with_orders = User.joins(:orders).where(orders: { status: 'completed' }) # 查找有完成訂單的用戶
希望對大家有幫助!~