gpt4 book ai didi

ruby-on-rails - 如何查询带有 ActiveStorage 附件的记录?

转载 作者:行者123 更新时间:2023-12-04 11:06:38 27 4
gpt4 key购买 nike

给定一个带有 ActiveStorage 的模型

class User 
has_one_attached :avatar
end

我可以检查单个用户是否有头像
@user.avatar.attached? 

但是,我如何才能返回带有(或所有没有)附件的所有用户的集合?

我尝试使用 joins返回带有附件的所有用户,但这似乎不适用于 blob 或附件表,或者我的语法不正确。

我确定我忽略了一些明显的东西。是否可以按照以下方式做一些事情:
User.where(attached_avatar: nil)

如果是这样,这是在哪里记录的?

最佳答案

附件关联名称约定

附件关联使用以下约定命名:
<NAME OF ATTACHMENT>_attachment
例如,如果您有 has_one_attached :avatar那么关联名称将是 avatar_attachment .

查询 Active Storage 附件

现在您知道了附件关联的命名方式,您可以使用 joins 查询它们。就像任何其他 Active Record 关联一样。

例如,给定 User下面类

class User
has_one_attached :avatar
end

您可以 查询所有 User具有该附件的记录 如下
User.joins(:avatar_attachment)

这将执行 INNER JOIN它只会返回带有附件的记录。

您可以 查询所有 User没有该附件的记录 像这样
User.
left_joins(:avatar_attachment).
group(:id).
having("COUNT(active_storage_attachments) = 0")

关于ruby-on-rails - 如何查询带有 ActiveStorage 附件的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52418114/

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