2016-07-01 18 views
0

私はUserモデルとPhotoモデルを持っています。私はHerokuのコンソールに行けば、私は例えば、データベースを検索することができます。user.photos.countに基づいてスコープを作成する方法

u = User.find(2) 
u.photos.count 
=> 25 

は、私は彼らのphotos.count番号に基づいてユーザーを分類して、ページ付けできるように、私のUserモデルにスコープを作成したいですユーザー。

Class User 

scope :photocount ?????? 

UsersController 

def index 
    @users = User.photocount.paginate(page: params[:page]) 
end 
+0

写真数でユーザーを並べ替えてからページ付けすることを意味しますか? – Vasfed

+0

はい、これが私の言いたいことです。私はOPを更新します。 :) –

答えて

0

希望するものはcounter_cacheです。ユーザモデルに列photos_countを追加し、写真のモデルの:それはカウンターのキャッシュがない

scope :by_photos_count, ->{ order(:photos_count) } 

belongs_to :user, counter_cache:true 

は、その後、あなたはより多くの

in rails guides hereカウンターキャッシュに関する適用範囲は次のようになります User.order(:photos_count).page(params[:page]) 参照してくださいすることができます依然として可能ですが、非常に非効率的です:

User.joins('join (select user_id, count(*) as sort from photos group by user_id) as sort ON users.id=sort.user_id').order('sort.sort').page(params[:page]) 
関連する問題