So fügen Sie bedingte where-Klauseln in Rails hinzu

8

Ich bin ein Railway-Neuling und versuche eine Suche auf einem Tisch mit Schienen durchzuführen, und ich benutze nur mein SQL-Wissen, um dies zu tun. Aber das scheint einfach nicht wie Schienen oder Rubin zu sein ...

Gibt es einen besseren Weg, um das zu tun, was ich unten mache? (Übergeben Sie im Grunde nur Datumsangaben an SQL, wenn diese gefüllt sind)

%Vor%

BEARBEITEN

user.rb

%Vor%

place.rb

%Vor%

container.rb

%Vor%

label.rb

%Vor%

Grundsätzlich möchte ich die Anzahl der Container innerhalb der Labels eines bestimmten Benutzers oder mit einer direkten Beziehung pro Standort ermitteln und nach Anfangs- und Enddatum filtern können.

Eines dieser Daten kann null sein, und deshalb müsste ich das in meiner "Abfrage" ansprechen.

Meine Frage ist: Wie kann ich das auf Schienen machen? Ich habe mir Ссылка angesehen und vielleicht könnte ich hier irgendwo den Befehl "except" verwenden ... aber dieses Beziehungsmodell scheint einfach ein Bit komplex, dies mit ActiveRecord zu tun ... wie kann ich ?, ich glaube wirklich, ich sollte ActiveRecord verwenden, aber wie?

Danke

    
MrWater 27.07.2012, 14:19
quelle

2 Antworten

18

Sie können mehrere where -Aufrufe auf eine Abfrage anwenden, um Ihre Basisabfrage zu erstellen:

%Vor%

und fügen Sie dann abhängig von Ihrem Datumsintervall einen weiteren where -Aufruf hinzu:

%Vor%

Jeder Aufruf von where fügt Ihrer gesamten WHERE-Klausel mit AND ein weiteres Element hinzu, etwa wie folgt:

%Vor%

ist dasselbe wie WHERE a AND b AND c zu sagen.

    
mu is too short 27.07.2012, 18:24
quelle
0

Ich kann mir keinen guten Grund vorstellen, warum Sie SQL in Ihrem Code wirklich generieren möchten. Active Record scheint eine viel effizientere Lösung für Ihre Bedürfnisse zu sein, es sei denn, es gibt einen Grund, warum Sie das nicht nutzen können.

Link, der erklärt, wie man Tabellen mit aktivem Datensatz verbindet

    
Frank Visaggio 27.07.2012 15:34
quelle