iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
Software Development

從餐飲業轉職成小白工程師的所見所學系列 第 26

Rails 查詢語句? 什麼時候該用哪個? Day 26

  • 分享至 

  • xImage
  •  

我平常在使用 Rails 開發的時候,時常搞不清楚要用那些查詢語句,整理了一下分享給大家!

find

我們可以透過 find 透過主key值查找單個紀錄。例如 :

# 根據用戶 ID 查找用戶記錄
@user = User.find(1)  # 查找用戶ID為1的記錄

find_by

可以透過特定條件查找單個紀錄。例如 :

# 根據電子郵件地址查找用戶記錄
@user = User.find_by(email: 'example@example.com')  # 查找特定電子郵件地址的用戶記錄

include

預加載關聯的數據,避免 N+1查詢問題。

@users = User.includes(:orders)  # 預加載用戶的訂單數據

where

用於查詢滿足特定條件的紀錄。

# 查找價格低於 50 的產品
@cheap_products = Product.where("price < ?", 50)

pluck

提取特定列的數據。

@user_names = User.where(status: 'active').pluck(:name)  # 提取所有狀態為 'active' 的用戶的名字

order

排序紀錄。

@products = Product.order(:price)  # 按價格升序排序產品

@products = Product.order(:price :desc)  # 按價格降冪排序產品

group

對紀錄進行分組

@orders = Order.group(:user_id)  # 按用戶 ID 分組訂單記錄

count

計算紀錄的數量

@active_users_count = User.where(status: 'active').count  # 計算狀態為 'active' 的用戶數量

sum、average

計算數值列的總和、平局值

@total_sales = Order.sum(:total_amount)  # 計算所有訂單的總銷售額
@average_rating = Product.average(:rating)  # 計算所有產品的平均評分

joins

連接不同的表進行查詢

@users_with_orders = User.joins(:orders).where(orders: { status: 'completed' })  # 查找有完成訂單的用戶

希望對大家有幫助!~


上一篇
Proc? Lambda? Day25
下一篇
N+1 ? Day27
系列文
從餐飲業轉職成小白工程師的所見所學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言