Recherche bijou. Vous pouvez facilement implémenter une recherche dans la colonne de cette table ou table associée. https://github.com/activerecord-hackery/ransack Cependant, si vous souhaitez affiner par des conditions de recherche compliquées ou des conditions autres que des colonnes, vous devez en concevoir un peu.
Je veux rechercher certains éléments avec ʻAND et le reste avec ʻOR
.
La requête ressemble à ceci:
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 = 'Arbre de Tanaka' )
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: "Arbre de Tanaka"
}
}
#résultat
SampleModel.search(g: group).result
En concevant le hachage attribué au groupe, vous pouvez manipuler les conditions de regroupement, ET et OU comme vous le souhaitez. Pratique! Cependant, si la lisibilité est réduite ou si vous faites des choses aussi irrégulières, cela coûte de l'argent à étudier, donc si vous savez que les conditions de recherche seront hors de sac dès le début, ne le forcez pas à correspondre au saccage et faites-le vous-même. Je pense qu'il vaut mieux écrire une requête.
Recommended Posts