ruby-on-rails - 两列的导轨组合
问题描述
在我的 Ruby on Rails 项目中,我有一个Message
具有direction
、from
、to
列的模型。direction
可以是“传入”或“传出”。
我想按消息from
和to
字段将消息分组到对话中。假设我的数据库中有以下消息:
{id: 1, direction: 'incoming', from: '10000', to: '2222'}
{id: 2, direction: 'outgoing', from: '2222', to: '10000'}
{id: 3, direction: 'incoming', from: '10001', to: '3333'}
{id: 4, direction: 'outgoing', from: '3333', to: '10001'}
最后我想要一个看起来像的哈希{['10000','2222']=>[message with id 1, message with id 2], ['10001','3333']=>[message with id 3, message with id 4]}
我已经尝试过Message.all.group_by{|m| [m.from, m.to]}
了,但这会给我一个带有 keys 的哈希值[['10000', '2222'], ['2222','10000'],['10001', '3333'], ['3333','10001']]
。在这里,我有重复的键,即使它们的顺序不同。
谢谢!
解决方案
试试这个,messages
你的消息在哪里。
messages.group_by do |m|
m.direction == "incoming" ? [m.from, m.to] : [m.to, m.from]
end
推荐阅读
- reactjs - 在 ReactJS 中生成站点地图,当前可用的解决方案不起作用
- python-3.x - ImportError:无法使用 pytesseract 导入名称“image_to_data”
- c# - 如何使用 VS2017 查看长时间运行的 C# 异步操作的当前进度?
- c++ - 你如何在静态函数c ++中使用成员函数
- android - ibm watson 和谷歌云语音到文本 api 是否有可能结合?
- java - 构建失败的 android,弃用的功能
- vue.js - 捏放大vue js
- docker - 使用 docker-compose 构建开发和部署管道
- xamarin.forms - 如何在 Xamarin 中更改 MasterMainPage 的导航栏颜色
- r - 按时间顺序排序带时间戳的数据时出现不希望的输出