gpt4 book ai didi

ruby-on-rails - 如何找到最大关联记录数?

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:29 25 4
gpt4 key购买 nike

我有帐户用户。帐户 has_many :users 和用户 belongs_to :account

我想知道的是任何单个帐户拥有的最大用户数。

因此,它需要循环遍历所有帐户,对每个帐户的用户求和并返回每个帐户的用户数,或者理想情况下,只返回它在所有帐户中找到的最大用户数。

运行 Rails 4.0.12 和 Ruby 2.1.5。

最佳答案

您可以循环所有帐户并进行计数,但效率很低。使用 JOINCOUNT

result = Account.select('accounts.id, COUNT(users.id)').joins(:users).group('accounts.id')

结果会是

#<ActiveRecord::Relation [#<Account id: 6>, #<Account id: 4>, #<Account id: 5>, #<Account id: 1>, #<Account id: 3>]>

每个项目的属性都是

{"id"=>1, "count"=>1}

因此,如果您获取每个结果,您将拥有

results.each do |result|
result.id
# => the account id
result.count
# => the count of user per account
end

将所有内容都放在一个哈希中

results.inject({}) do |hash, result|
hash.merge!(result.id => result.count)
end

关于ruby-on-rails - 如何找到最大关联记录数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28048318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com