gpt4 book ai didi

ruby-on-rails - Rails 5 - 查询具有 uniq 属性的记录

转载 作者:行者123 更新时间:2023-11-29 13:18:31 24 4
gpt4 key购买 nike

我正在使用 Rails 5 和 Postgresql。以前版本的 Rails 已经回答了这个问题(包括 Rails 4,使用 distinct、uniq 等,但在 Rails 5 中没有一个对我有用,因为它们已经过时了)。

我有一个 Upload 模型,它有一个 uuid 属性。我想获取具有不同 uuid 的记录,而不使用来自枚举的 uniq

这是我的原始查询:

Upload.includes(:user, product: [:catalog]).where(file_type: "product_attachment", product_id: nil, user_id: current_user.id))

我在添加 distinctselect 时出错(看起来这些方法通常只用于从模型返回一个属性,而我在这里需要整个对象).

知道如何在 Rails 5 中实现这一点吗?

使用示例数据进行编辑:

上传:

id: 1 
uuid: 8e8fece82b6b1368ab6f21852c625e85718d210e

id: 2
uuid: 842e7650b4bba97f097d9cf57f47d8160086b7cd

id: 3
uuid: 8e8fece82b6b1368ab6f21852c625e85718d210e

上传 1 和 3 具有相同的 uuid,因此预期结果将仅包含 id 为 1 和 2 的上传(它们具有不同的 uuid)。

最佳答案

假设您希望Upload 具有最小id 的每个重复uuid 组,

Upload.includes(:user, product: [:catalog]).where(file_type: "product_attachment", product_id: nil, user_id: current_user.id)).
where(id: Upload.group(:uuid).select("min(id)"))

为了分解它,这个 where 子句过滤所有具有重复 uuidUpload 除了具有 min 的那个> id

where(id: Upload.group(:uuid).select("min(id)"))

关于ruby-on-rails - Rails 5 - 查询具有 uniq 属性的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45635390/

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