Ich versuche, eine Teilmenge der Datensätze aus meiner Datenbank mit Rails 4.1.8 und Ruby 2.1.5 mit ActiveRecord auszuwählen. Aber das Ergebnis enthält die Datensätze, die ich mit der where.not-Klausel weglassen möchte. Die resultierende SQL ist auch unten angegeben. Es sieht für mich so aus, dass der SQL-Wert für die where.not-Klausel entweder ignoriert wird oder falsch ist. Was ist der richtige Weg, dies zu tun?Rails ActiveRecord gemischte Bedingungen von wo und wo.nicht
class TablesController < ApplicationController
def index
@tables = Table.all.order("fil ASC").where(object: ['REP', 'CPT']).where.not(srcmbr: 'A*')
end
end
Ergebnis
Table Load (7.3ms) SELECT inputfile.* FROM inputfile WHERE inputfile.object IN ('REP', 'CPT') AND (inputfile.srcmbr != 'A*') ORDER BY fil ASC
Rendered tables/index.html.erb within layouts/application (709.1ms)
Completed 200 OK in 912ms (Views: 882.4ms | ActiveRecord: 20.4ms)
Stellt 'A *' das Muster mathing dar? Wenn ja, versuche: '.where ('srcmbr NICHT LIKE?', 'A%')' – maicher
Nur ein Hinweis: 'Table.where (Objekt: ['REP', 'CPT']). Where.not (srcmbr : 'A *') .order (fil:: asc) '. Was stimmt überhaupt nicht mit der Abfrage? Klingt plausibel. – potashin
Die mit 'A *' übereinstimmenden Elemente werden im Ergebnis angezeigt. –