显示消息阵列中的最后一条消息
问题描述:
关于my last attempted answer,我可以实现我想要的。一旦应用程序工作,我发现有一些不同之处:只有创建消息并发送消息的人才会显示。如果我回复,我没有看到答复,我知道这个问题。显示消息阵列中的最后一条消息
我消息模型表:[:id, :user_id, :to, :body, ...]
:user_id
,它是用于确定谁创建的消息将类似于from
。
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
)的1
一个ID的所有消息。
由于:to
列,我不会看到我的回复。
我(客户端)的答复是这样的:
to: #student id
user_id: #client id
和学生信息:
to: #client id
user_id: #student id
所以因为to
现在都指向一个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) *')
越来越'语法错误,意外')'' – Sylar
是的,你的代码给了我最后的回复,在控制台中,但打破了我的帖子中的代码,这是链接中的答案。 – Sylar
我已经将'.or()'添加到了我现有的代码中,就是这样。谢谢! – Sylar