2013-07-18 65 views
0

我有這3款車型如果我想避免n加一個問題,我該如何編碼?

  • 學生
  • 性別
  • 血型

學生有這三種模式,如性別,血型,縣。 和他們每個人都屬於學生。

關聯設置已經在每個模型文件中。

在這種情況下,如果我想避免N + 1問題,該如何編碼?

是這樣的嗎?

@students = Student.find(:all).includes.includes(:gender, :blood_type, :prefecture) 

回答

3

你只需要.includes一次,你可以擺脫find(:all)的,因爲Rails 3中並不需要它。

students = Student.includes(:gender, :blood_type, :prefecture) 

話雖如此,它看起來像這些都只是看錶,我建議你檢查出我的寶石ClassyEnum的潛在替代,如果你擔心性能問題。

+0

你能解釋一下你的創業板如何幫助業績嗎? – Mohamad

+0

@Mohamad它可以讓你對數據庫進行非規範化處理,以減少查詢次數。 [維基百科文章](http://en.wikipedia.org/wiki/Denormalization)解釋它比我更好。其基本思想是通過將值存儲爲字符串來消除附加連接,然後將其快速轉換爲對象。 –

相關問題