sql >> Database >  >> RDS >> PostgreSQL

Implementatie van geblokkeerde datums voor een ORM-model voor gebruikersgebeurtenissen

Hier is de oplossing die ik heb gekozen. De truc was het gebruik van left outer join (ruby-commando gretig_load) voor gebruikers en de tabel met geblokkeerde_datum_perioden, en inclusief die gebruikers wiens startdatumveld in de samengevoegde tabel NULL is, uiteraard omdat ze geen geblokkeerde datumobjecten hebben die aan zichzelf zijn gekoppeld. De vraag die ik gebruik:

User.eager_load(:blocked_date_periods).
  where("blocked_date_periods.start_date is null OR 
    not tsrange(
      blocked_date_periods.start_date - '00:59:59'::interval,
      blocked_date_periods.end_date + '00:59:59'::interval
    ) @> ?::timestamp", 
  Date.parse(DATE_STRING)).count

Ik moest 1 uur optellen en aftrekken van de start- en einddatum omdat de zoekopdracht om de een of andere reden geen exacte einddatums wilde bevatten, zodat 26-12-2015 niet binnen de periode van 22-12-2015 tot 12-16-2015 om de een of andere reden die ik nog moet begrijpen.

Om de een of andere reden vind ik die oplossing niet leuk en zou ik graag willen weten of er een vraag is die beter en sneller is dan wat ik heb.




  1. JPA Criteria Builder-volgorde op een somkolom

  2. Waarom retourneert AES_DECRYPT null?

  3. Hoe hebben Android-apps toegang tot MySQL?

  4. Rails &Postgres:Migratie naar change_colomn geeft fout kan niet worden gegoten om tijdstempel te typen zonder tijdzone