Rails中的LEFT SELF JOIN-基于线程的私人消息

问题描述

|| 我正在尝试在Rails中实现基于一对一线程的私有消息传递。 以下是我的消息模型:
Table name: messages

id                :integer         not null,primary key
sender_id         :integer
recipient_id      :integer
sender_deleted    :boolean         default(FALSE)
recipient_deleted :boolean         default(FALSE)
subject           :string(255)
body              :text
read_at           :datetime
created_at        :datetime
updated_at        :datetime
messagethread_id  :integer
我为两个用户间的新会话创建了一个新线程。 我正在使用以下查询来查找给定用户的每个线程的最新未删除消息(例如:id = 1):
SELECT * 
FROM messages LEFT JOIN 
          (SELECT * 
               FROM messages m3 
               WHERE (m3.sender_id = 1 AND m3.sender_deleted = FALSE) 
                     OR (m3.recipient_id = 1 and m3.recipient_deleted = FALSE)) AS m2 
          ON (messages.updated_at,messages.id) < ( m2.updated_at,m2.id) 
                  AND m2.messagethread_id = messages.messagethread_id
WHERE ((messages.sender_id = 1 AND messages.sender_deleted = FALSE) OR (messages.recipient_id = 1 AND messages.recipient_deleted = FALSE)) AND m2.updated_at IS NULL
我想在我的rails模型/控制器中实现这一点,并在相应的视图上显示结果。 有人可以指导如何在一系列消息中获得这些结果吗?提前致谢!     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...