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

Mulighed for en valgfri has_one association med sig selv

Jeg blev først forvirret over begreberne purchase og sale . Men din opdatering tror jeg hjalp mig med at forstå problemet mere.

Så hvad jeg forstod var, at alt usolgt er køb minus salg. Følgende skulle give dig denne liste:

scope :unsold, lambda {includes(:sale).select { |p| !p.sale.present? } }

Opdatering:

En kort forklaring på, hvad der sker her:

Omfanget gør ikke rigtig alt arbejdet i databasen. Det foretager en SQL-udvælgelse af alle indkøb, inklusive det samlede salg først. Dette giver dig alle registreringerne i dine purchase bord. Så falder dette omfang tilbage til Ruby Arrayselect metode. Metoden returnerer alle køb p uden et sale hvilket gøres ved at negere køb med salg.

Håber dette opklarer lidt, hvad omfanget gør.

Opdatering 2:

Et kikkert, der kan kædes sammen!

scope :unsold, lambda { where('id not in (?)', Sale.pluck(:linked_indent_id)) }

I dette omfang er id s af køb, der ikke er i Sale 's linked_indent_id er valgt.



  1. ConnectionString til at forbinde 3 master noder til MySQL

  2. Synkroniserer primær nøgle mellem to tabeller gemt i to forskellige databaser

  3. Kan ikke oprette forbindelse til mysql-server med MAMP eller med Community Server

  4. I stand til at oprette postgres-database på kommandolinjen, men ikke i bash-script