显示消息数组中的最后一条消息
关于我上一次尝试的答案 ,我可以实现我想要的。 一旦应用程序正常工作,我发现有些不同之处:只有创建消息并发送消息的人才会显示。 如果我回复,我没有看到答复,我知道问题。
我的消息模型有表: [: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) *')