【问题标题】:Rails 4 - find the Latest Distinct Record based on columnRails 4 - 根据列查找最新的不同记录
【发布时间】:2015-04-17 19:22:17
【问题描述】:
+-----------------+------------+------+-----+---------+----------------+
| 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。一个订单可以有多个消息。我想根据 order_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}

【问题讨论】:

    标签: mysql ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    假设id 最高的消息是最新/最新消息,您可以使用以下内容:

    @message_ids = Message.where(user_id: current_user.id).group(:order_id).maximum(:id).values
    @messages = Message.find(@message_ids)
    

    【讨论】:

    • @HarshaMV 没问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多