gpt4 book ai didi

ruby-on-rails - 根据嵌套模型的计数进行排序的 Rails 查询?

转载 作者:行者123 更新时间:2023-12-04 06:05:28 24 4
gpt4 key购买 nike

我有两个模型:Group & GroupMember

我想返回按最高 GroupMember 计数排序的组?你如何在 Rails 中设置这种类型的连接/查询计数?

最佳答案

有了 counter_cache,生活就轻松多了:

$ rails g migration add_group_member_counts_to_groups

# migration
def change
add_column :groups, :group_members_count, :integer, default: 0
end

class GroupMember < ActiveRecord::Base
belongs_to :group, counter_cache: true
end

class Group < ActiveRecord::Base
has_many :group_members
scope :order_by_group_members_count, order('group_members_count DESC')
end

Group.order_by_group_members_count # => What you're looking for

只有一个查询,只在组表上。

编辑

如果您需要重置 group_members_count:
ids = Group.select(:id).map &:id
ids.each do |id|
Group.reset_counters(id, :group_members)
end

(因为 reset_counters 不接受 id 数组)

以后 Rails 3.2.0 ,你会写:
ids = Group.pluck(:id)

我等不及了 ;-)

关于ruby-on-rails - 根据嵌套模型的计数进行排序的 Rails 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407939/

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