gpt4 book ai didi

某些联合查询的 sql 语句 - rails

转载 作者:数据小太阳 更新时间:2023-10-29 08:47:50 24 4
gpt4 key购买 nike

假设我有一个带有 senderreceiver 属性的 Message 模型。获取两个用户之间交换的所有消息的 Rails 方法是什么?我写了一些范围和

scope :some_scope, lambda { |sender = nil, receiver = nil| where({:sender_id => sender, :receiver_id => receiver})}

然后我连接 Message.some_scope(some_receiver,some_sender)Message.some_scope(some_sender,some_receiver) 但我认为这不是最佳实践(顺便说一句,我没有找到在 rails 中制作 union 语句的简单方法)

最佳答案

在这种情况下最好使用类方法,因为它既复杂又需要参数。此外,您可以将您关心的两个条件放在一起,而不是使用联合。

def self.conversation(id1, id2)
id1_to_id2 = where(sender_id: id1, receiver_id: id2).where_values.reduce(:and)
id2_to_id1 = where(sender_id: id2, receiver_id: id1).where_values.reduce(:and)
where(id1_to_id2.or(id2_to_id1))
end

现在你可以这样做:

Message.conversation(user1.id, user2.id)

这将为您提供 user1user2 之间的所有消息。

关于某些联合查询的 sql 语句 - rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22133645/

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