2011-05-13 20 views
1

我想制定一個複雜的SQL查詢(在Rails 3)訪問屬於用戶的追隨者的照片對象。Rails複雜的SQL屬於用戶的追隨者對象

的情況是:

  • 用戶A 500米的追隨者
  • 每個跟隨有500張照片
  • 我想生成(使用will_paginate)10張照片同時基於該進行分頁查詢他們的創建日期並將其返回給用戶A

因此,這基本上就像將所有追隨者的照片收集到一個集合中,根據照片創建日期對集合進行排序,然後對結果進行分頁,一次只返回10張照片。這可能意味着最近的10張照片來自多個追隨者。

我對這個兩個問題:

  1. 你將如何有效地制定這樣一個複雜的查詢? (我對Rails比較新,所以我不太瞭解自定義查詢)。
  2. 有沒有理由不這樣做?例如,如果用戶有1000個關注者,每個關注者擁有10,000張照片,是否會出現延遲問題?

User.rb文件的關係進行建模爲:

has_many :following, :through => :relationships, :source => :followed 
has_many :followers, :through => :reverse_relationships, :source => :follower 

has_many :photos, :dependent => :destroy, :order => 'created_at DESC' 

其中一個追隨者/以下是另一個用戶。

感謝您提供任何指導!非常感謝! :)

回答

1

我懷疑會有延遲問題,因爲will_paginate對查詢設置了限制,在您的情況下爲10.但是,您需要確保數據庫中存在索引。

我覺得這樣的事情應該工作:

has_many :follower_photos, :class_name => 'Photo', :through => :followers 

這就是你想要的?

+1

不幸的是,這不會爲我工作,因爲它不斷要求來源 – iwasrobbed 2011-05-14 14:32:24