sql >> Database teknologi >  >> RDS >> PostgreSQL

ActiveRecord - vælg første post fra hver gruppe

Jeg ved ikke, hvordan du kan ringe til most_recent_chat_received_from_connected_users , som er en forekomstmetode af din Conversation klasse, på en forekomst af User uden at få en fejl, men jeg vil tilføje en brugerdefineret finder til samtalemodellen:

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 kan du få de ønskede samtaler i din controller med:

@conversations = Conversation.most_recent_for(current_user.id)



  1. Sådan opgraderes postgresql-database fra 10 til 12 uden at miste data til openproject

  2. Opret json med kolonneværdier som objektnøgler

  3. Postgresql regexp_matches inside view returnerer altid null, når der forespørges fra PHP

  4. MySQL-fejl på CREATE TABLE for mange-til-mange-forhold