获取实体具有最大关联

时间:2012-03-27 21:27:48

标签: ruby-on-rails-3 activerecord

我有两个这样的模型:

User
    has_many :contacts


Contact
    belongs_to :user

如何获得拥有最多联系人数的用户?

1 个答案:

答案 0 :(得分:0)

理想情况下,你use a counter cache column on your User model:

# db/schema.rb
create_table "users", :force => true do |t|
  t.integer  "contacts_count"
end

# app/models/user.rb
class User
  has_many :contacts
end
# app/models/contact.rb
class Contact
  belongs_to :user, :counter_cache => true
end

然后,您可以使用ActiveRecord的maximum calculation通过单个查询轻松提取具有最大联系人数的用户:

User.maximum(:contacts)