gpt4 book ai didi

mysql - 根据关系的存在向 ActiveRecord_Relation 结果添加属性?

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

我有一个users 表、一个notifications 表和一个notification_reads 连接表。我正在尝试为 ActiveRecord 查询编写一个范围,该查询将返回所有通知 (Notification.all),并根据用户是否具有该通知的相关 notification_read 来添加一个附加字段。

我想象它看起来像这样:

class Notification
scope :with_reads_by_user, -> (user) {
select("*", "[some sql that produces a boolean] as read")
.joins(:notification_reads)
.where(notification_reads: {user: user})
}
end

不过,我尝试过的任何方法似乎都无法接近。

最佳答案

尝试下面的方法,

scope :by_user, lambda { |user|
joins("LEFT OUTER JOIN notification_reads ON notification_reads.user_id = ? and notification_reads.notification_id = notifications.id", user.id).select("*", "IF(notification_reads.user_id IS NULL, FALSE, TRUE) as is_read_by_user")
}

查询

Notification.by_user(current_user)

引用号:select column as true / false if id is exists in another table

PS:没有尝试过这个。

关于mysql - 根据关系的存在向 ActiveRecord_Relation 结果添加属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40354879/

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