显示消息数组中的最后一条消息
Show last message in a message array
关于,我可以达到我想要的。应用程序运行后,我注意到有些不同:只有创建消息和发送消息的人才会显示。如果我回复,我没有看到回复,我知道问题所在。
我的 Message 模型有表格:[: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
) 的消息,ID 为 1
。
由于 :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) *')
关于
我的 Message 模型有表格:[: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
) 的消息,ID 为 1
。
由于 :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) *')