Rails 有非常完整的 ORM 機制,也是許多網站框架還難以超越的部分,其中的 has_many, has_one, belongs_to 等等的 association 拯救了不知多少工程師的白頭髮,讓大家少花了多少打 SQL 語法的歲月.....但近期著實被 has_many through 狠狠地上了一課,主要是 join 導致加總了重複的紀錄,使得金額與數量計算上出現大幅的落差。 先簡述一下我們的系統,就是一個電商架構的網站,其中 Transaction 與 TransactionItem 用來記錄每一筆交易買了哪些商品,那每個專案則理所當然的透過 transaction_items 來去找到 transaction_record 加總金額,即可知道共收到了多少錢。 (這邊姑且先不探討關聯設計上的問題,先針對