Suche Edelstein. Sie können problemlos eine Suche in der Spalte dieser Tabelle oder der zugehörigen Tabelle implementieren. https://github.com/activerecord-hackery/ransack Wenn Sie jedoch durch komplizierte Suchbedingungen oder andere Bedingungen als Spalten eingrenzen möchten, müssen Sie ein wenig überlegen.
Ich möchte nach einigen Elementen mit "UND" und nach dem Rest mit "ODER" suchen. Die Abfrage sieht folgendermaßen aus:
SELECT DISTINCT sample_models.*
FROM sample_model
WHERE (sample_models.column_1 = '202001' AND sample_models.column_2 = 'Hokuto Matsumura')
AND ( sample_models.column_3 = 'Jesse' OR sample_models.column_4 = 'Tanaka-Baum' )
ORDER BY sample_models.id ASC
group = {
"0" => {
m: "and",
column_1: "202001",
column_2: "Hokuto Matsumura"
},
"1" => {
m: "or",
column_3: "Jesse",
column_4: "Tanaka-Baum"
}
}
#Ergebnis
SampleModel.search(g: group).result
Indem Sie den der Gruppe zugewiesenen Hash erstellen, können Sie die Bedingungen für die Gruppierung, UND und ODER nach Ihren Wünschen ändern. Praktisch! Wenn jedoch die Lesbarkeit beeinträchtigt ist oder wenn Sie solche unregelmäßigen Dinge tun, kostet das Lernen Geld. Wenn Sie also wissen, dass die Suchbedingungen von Anfang an nicht durchsucht werden, erzwingen Sie nicht, dass sie mit der Durchsuchung übereinstimmen, und tun Sie es selbst. Ich denke, es ist besser, eine Abfrage zu schreiben.
Recommended Posts