gpt4 book ai didi

ruby-on-rails - Rails ActiveRecord 按日期将结果分组为子集合

转载 作者:行者123 更新时间:2023-12-04 05:42:52 26 4
gpt4 key购买 nike

我正在尝试在 Rails 3.1 中执行 ActiveRecord 查询,我将结果分类到分组项目的子集合中,在本例中按日期分组。

我认为我的代码可以最好地解释它。这是我的方法,它有效但发出 4 个查询来完成工作。这样做似乎效率不高。

def entry_days
days = @user.entry_groups.find(
:all,
:select => 'date',
:limit => 3,
:group => 'date').map(&:date)

entry_days = days.map do |date|
{ :date => date,
:entry_groups => @user.entry_groups.find_all_by_date(date)
}
end
end

使用下面 Dave Newton 的建议使用 group_by,我重新编写了这样的方法:
def entry_days
dates_with_entries = @user.entry_groups.find(
:all,
:select => 'date',
:limit => 3,
:group => 'date').map(&:date)

@user.entry_groups.where(:date => dates_with_entries).all.group_by(&:date).
map do |date, entry_groups|
{ :date => date,
:entry_groups => entry_groups }
end
end

至少我现在只有 2 个查询。

然后我再次像这样重新编写了该方法:
  dates_with_entries = user.entry_groups.all(
:select => 'date',
:limit => num_days,
:order => 'date DESC',
:group => 'date').map(&:date)

entry_groups = user.entry_groups.
where(
:date => dates_with_entries
).
all(:order => 'date DESC')

entry_days = entry_days.group_by(&:date).
map { |date, entry_groups|
{
:date => date,
:entry_groups => entry_groups
}
}

附带说明:我不应该将这么多方法链接在一起,嵌套方法和哈希的首选缩进格式是什么?

最佳答案

为什么不全部选择它们然后使用类似 group_by 的东西?

关于ruby-on-rails - Rails ActiveRecord 按日期将结果分组为子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7302992/

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