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 回答