0

User has_many microposts Micropost belongs to users

带走微博超过10条的用户

控制器:

def active_users
  @users  = User.active_users
end

模型

def self.active_users
  self.select { |u| u.microposts.size > 10}
end

如何将方法重写active_users为 ActiveRecord 请求(可能使用:count :group方法)

                             **UPDATE**

the solution

self.joins(:microposts).group("users.id").having("count(*) > 10").all

4

1 回答 1

0

Counter_Cache 是您的答案。

也许去吧: http ://railscasts.com/episodes/23-counter-cache-column http://guides.rubyonrails.org/association_basics.html#counter-cache

User has_many microposts

Micropost 
  belongs to users
  counter_cache: true

然后进行迁移:

class AddMicropostCountToUsers < ActiveRecord::Migration
  def change
    add_column :users, :microposts_count, :integer
  end
end

然后你可以去做类似的事情。

@users  = User.where('microposts_count > ?', 10)

如需进一步定制,请查看链接。

于 2013-09-26T13:30:21.243 回答