我的模型中有这样的东西:
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属性搜索嵌套对象的映射和索引的正确方法是什么?
感谢阅读。
答案 0 :(得分:0)
我通过在users
表上创建另一个字段并索引该值而不是在运行时执行嵌套搜索来解决了这个问题。
这可能不是最佳解决方案,但我有截止日期。欢迎任何更好的解决方案:)
答案 1 :(得分:-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 %>