gpt4 book ai didi

ruby-on-rails - 如何在 rails 中的 .where 调用中添加唯一性

转载 作者:数据小太阳 更新时间:2023-10-29 09:00:19 25 4
gpt4 key购买 nike

我在文档中找不到这个,搜索它只显示在模型中添加唯一性的结果。

如何为 .where 调用添加唯一性。我想让下面的命令不使用相同的 category_item_id 获取 CategoryItemValues

last_updated_items = CategoryItemValue.where(guide_id: @guide.id).order(updated_at: :desc).limit(5)

因此该命令会获取 5 个最近更新的 CategoryItemValues,但不会获取其中 5 个具有相同 category_item_id 的值。如果 category_item_id 与另一个最近更新的相同,它会跳过它并将下一个最近更新添加到返回的 5 个结果中。

更新

使用 select 方法并使用 distinct 出于某种原因仍然会给出重复的 category_item_id

CategoryItemValue.select(:category_item_id).distinct.where(guide_id: @guide.id).order(updated_at: :desc).limit(5).pluck(:category_item_id, :updated_at)

[[6,2016 年 5 月 11 日星期三 10:24:39 UTC +00:00],[3,2016 年 5 月 11 日星期三 10:21:20 UTC +00:00],[3, 2016 年 5 月 11 日星期三 10:20:43 UTC +00:00],[6,2016 年 5 月 11 日星期三 09:14:14 UTC +00:00],[5,2016 年 5 月 11 日星期三 09:14:04 UTC +00:00]]

注意第二个和第三个数组值的开头都是 3。 (加上我不确定日期时间后的逗号是否会影响从数组中提取这些值)

最佳答案

尝试这样的事情:

CategoryItemValue.select(:category_item_id, "MIN(updated_at) as updated_at").distinct.where(guide_id: @guide_id).group(:category_item_id).order(updated_at: :desc).limit(5)

这两种方法都对由 category_item_id 设置的结果进行分组,并且应该为每个类别项目返回一个记录,其中包含该类别项目的 updated_at 的最旧 (MIN) 值。获取最新的更新记录,使用 MAX 而不是 MIN。

关于ruby-on-rails - 如何在 rails 中的 .where 调用中添加唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37175307/

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