ActiveRecord 提供兩種統計方法,以及手動重新載入物件資料的機制。
c1 = Order.count
c2 = Order.count(["name = ?", "Dave Thomas"])
c3 = LineItem.count_by_sql(
"select count(*) from line_items, orders " +
"where line_items.order_id = orders.id " +
"and orders.name = 'Dave Thomas'"
)
puts "Dave has #{c3} line items in #{c2} orders (#{c1} orders in all)"
count:支援條件陣列,自動產生 COUNT(*)count_by_sql:完全自訂 SQL,適用於複雜連接查詢reload多程序/執行緒環境下,資料庫資料可能被外部修改。呼叫 reload 將物件屬性同步為資料庫最新值:
stock = Market.find_by_ticker("RUBY")
loop do
puts "Price = #{stock.price}"
sleep 60
stock.reload
end
常用於長時間執行的任務、輪詢監控或交易處理中確保資料一致性。