+-----------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| body | text | YES | | NULL | |
| host_id | int(11) | NO | MUL | NULL | |
| user_id | int(11) | NO | MUL | NULL | |
| order_id | int(11) | NO | MUL | NULL | |
| is_read_by_user | tinyint(4) | YES | | NULL | |
| is_read_by_host | tinyint(4) | YES | | NULL | |
| status | tinyint(4) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+-----------------+------------+------+-----+---------+----------------+
我有上面的模型messages
。订单可以包含多条消息。我想根据订单ID选择最新消息。
@messages = Message.where(user_id: current_user.id).order('created_at DESC').uniq('order_id').limit(5)
@messages = @messages.uniq {|p| p.order_id}
答案 0 :(得分:2)
假设具有最高id
的邮件是最新/最新邮件,您可以使用以下内容:
@message_ids = Message.where(user_id: current_user.id).group(:order_id).maximum(:id).values
@messages = Message.find(@message_ids)