sql >> Database >  >> RDS >> PostgreSQL

ActiveRecord - selecteer het eerste record van elke groep

Ik weet niet zeker hoe je most_recent_chat_received_from_connected_users kunt bellen , wat een instantiemethode is van uw Conversation class, op een instantie van User zonder een foutmelding te krijgen, maar ik zou een aangepaste vinder toevoegen aan het gespreksmodel:

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

Nu kunt u de gewenste gesprekken in uw controller krijgen met:

@conversations = Conversation.most_recent_for(current_user.id)



  1. Hoe DAYOFMONTH() werkt in MariaDB

  2. Voor- en nadelen van het gebruik van SqlCommand Prepare in C#?

  3. Hoe een bestand in mysql DB op een gedeeld hostingplatform te laden?

  4. qt + orakel verbindingsprobleem