PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

ActiveRecord - изберете първия запис от всяка група

Не съм сигурен как можете да се обадите на most_recent_chat_received_from_connected_users , който е примерен метод на вашия Conversation клас, на екземпляр на User без да получа грешка, но бих добавил персонализиран търсач към модела на разговора:

class Conversation < ActiveRecord::Base
  # ...

  def self.most_recent_for(user_id)
    select('DISTINCT ON (sender_id) *').where(reciever_id: user_id).order("sender_id, created_at DESC")
  end

  # For MySQL you could have used:
  #
  # def self.most_recent_for(user_id)
  #   where(reciever_id: user_id).group("sender_id").order("created_at DESC")
  # end

  # ...
end

Сега можете да получите желаните разговори във вашия контролер с:

@conversations = Conversation.most_recent_for(current_user.id)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Референтен psql параметър в анонимния блок на PL/pgSQL

  2. Връзка с Google Cloud PostgreSQL чрез JDBC с SSL

  3. Първи стъпки с Postgres 13 на Ubuntu 20.04

  4. Ако е възможно, как може да се вгради PostgreSQL?

  5. Фиксиране на дупки/пропуски в числата, генерирани от последователността на Postgres