显示消息数组中的最后一条消息

关于我上一次尝试的答案 ,我可以实现我想要的。 一旦应用程序正常工作,我发现有些不同之处:只有创建消息并发送消息的人才会显示。 如果我回复,我没有看到答复,我知道问题。

我的消息模型有表: [:id, :user_id, :to, :body, ...]

:user_id与用于确定创建消息的人类似。

User 1是客户端, User 2是学生。 学生向客户发送消息。 只有我的客户端代码是这样的:

 #Controller Index: @messages = Message.where(to: current_user.id) # My replies are not included here .order(user_id: :asc, created_at: :desc) .select('distinct on (user_id) *') 

我说给我发给我的所有消息( :to )id为1

由于:to列,我不会看到我的回复。

我的(客户端)回复如下所示:

 to: #student id user_id: #client id 

和学生留言:

 to: #client id user_id: #student id 

因为现在指向一个id,让我们说2我不会看到回复。 我可能需要改变模型,但如果你看到一个简单的方法,请告诉我。

编辑:

答案很有效:

 @messages = Message.where(to: current_user.id).or(Message.where(user_id: current_user.id)) .order(connection: :desc, created_at: :desc) .select('distinct on (connection) *') 

由于您使用的是Rails 5,因此您可以利用它or方法:

 Message.where(to: current_user.id).or( Message.where(user_id: current_user.id) ).order(connection: :desc, created_at: :desc) .select('distinct on (connection) *')