2012-09-21 25 views

回答

1

在Rails 3中,數據庫行爲被分解爲不同的混合。這樣,有些東西可以進行驗證而不必從ActiveRecord :: Base繼承。 ActiveRecord :: Base類引入了執行數據庫操作所需的所有混合插件。

此外,關係實際上不是記錄或記錄集。它可以保持查詢的細菌,所以它可以被鏈接,直到鏈中的某些內容返回記錄或記錄集。

因此,where方法返回一個Relation對象。該對象可以調用查詢中的另一個過濾器返回其他Relation對象的位置。依此類推,直到所有的方法,首先,計數或某事是調用以使返回的對象成爲查詢的結果。

+0

對不起,我不覺得這個評論非常有用。我會把它分成幾部分:不知道這(第1)如何回答我的問題,因爲Relation不是一個模塊,它是一個類並由Base實例化(如我所說的)。懶惰和可鏈接性(第二和第三)顯然不會阻止關係實現基本功能,它已經(正如我所說的)。總之,我仍然不明白爲什麼從Base開始。 – user1689037

+1

(1)Base帶來其他功能,如驗證。因此,這些功能被組織到不同的部分中(混合或與關係一樣的聚合模式),並在用戶(程序員)API Base類中彙集在一起​​。 (2)關係的細菌性質是複雜的,所以最好將所有的併發症從查詢的細菌中分離出來,並將其轉換成自己的類中的結果集,並通過Base中的聚合模式進行訪問。 –

相關問題