2016-08-10 4 views
0

Ich brauche eine Abfrage mit select_all zu machen, das so etwas wie:direkte Datenbankabfrage mit select_all mit Platzhalter

query << "SELECT blah blah FROM blah blah WHERE status_id IN(?, ?)" 
query << " AND end_date IS NULL " 
... 
ActiveRecord::Base.connection.select_all(query.join, STATUS_1, STATUS_2) 

Dies ist natürlich nicht funktioniert.

Was ist der richtige Weg?

+0

Haben Sie ein bestimmtes Modell haben? Oder Sie möchten nur eine Abfrage erstellen? –

+0

Es ist eine allgemeine Abfrage, die ich erstelle, nicht mit einem Modell verwandt. Das ist der Grund, warum ich keine Rails-Magie verwende –

Antwort

0

Als Active wird verwendet, um Sie mit Arel allein gehen konnte, da es immer noch ein dependancy für Active ist:

table = Arel::Table.new("your_table") 
select = [:id, :name] 
statuses = %w[active new] 
end_date = nil 
> puts table.project(*select). 
    where(table[:status].in(statuses)). 
    where(table[:end_date].eq(end_date)).to_sql 

Abfrage erstellt:

SELECT id, name FROM "your_table" WHERE "your_table"."status" IN ('active', 'new') AND "your_table"."end_date" IS NULL