0

私のモデルには次のようなものがあります。

class User < ActiveRecord::Model

  has_many :followers, :through => :as_followed_followings, :class_name => "User", :foreign_key => "follower_id", :uniq => true

  ...

  def self.search(params)
    tire.search(load: true, page: params[:page], per_page: params[:per]) do
    end
  end

end

ユーザーのフォロワー数で並べ替えられたユーザーの配列を返したいと思います。

count プロパティでネストされたオブジェクトを検索するためのマッピングとインデックスを定義する正しい方法は何ですか?

読んでくれてありがとう。

4

2 に答える 2

0

users実行時にネストされた検索を実行する代わりに、テーブルに別のフィールドを作成し、その値にインデックスを付けることで、この問題を解決しました。

これは最善の解決策ではないかもしれませんが、締め切りがあります。より良い解決策は大歓迎です:)

于 2013-07-17T07:36:00.583 に答える
-1

で試しています...

AsFollowedFollowing.count(:group => :follower_id, :order => "count_all DESC")

これは次を含む順序付けられたハッシュですuser_id => count

このハッシュをループしたい場合は、次のことを試してください

# in controller
@counts = AsFollowedFollowing.count(:group => :follower_id, :order => "count_all DESC")
@users = User.where(:id => @counts.map{|k,_| k})

#in view
<% @counts.each do |k, v| %>
  <% user = @users.find{|u| u.id == k} %>
  <div><%= user.name %> | <%= v %></div>
<% end %>
于 2013-07-16T10:11:24.903 に答える