J'utilise search logic pour filtrer les résultats sur la fiche de la société. L'utilisateur peut spécifier n'importe quel nombre de paramètres en utilisant une variété d'URL nommées. Par exemple:DRYing Recherche Logique dans Rails
/lieu/Mexique
/secteur/technologie
/secteur/financier/lieu/argentina
résultats dans les domaines suivants respectivement:
params[:location] == 'mexico'
params[:sector] == 'technology'
params[:sector] == 'financial' and params[:location] == 'argentina'
J'essaie maintenant de nettoyer ou "SEC" mon code de modèle. Actuellement, j'ai:
def self.search(params)
...
if params[:location]
results = results.location_permalink_equals params[:location] if results
results = Company.location_permalink_equals params[:location] unless results
end
if params[:sector]
results = results.location_permalink_equals params[:sector] if results
results = Company.location_permalink_equals params[:sector] unless results
end
...
end
Je n'aime pas répéter les recherches. Aucune suggestion? Merci.
utilisation compacte au lieu de rejeter: - il devrait être plus rapide et fait la même chose (et nul?). Vous pouvez aussi essayer params.values_at (: emplacement,: secteur) .compact.each ... – hurikhan77
Bonnes idées. J'aime "rejeter nil" car il est immédiatement clair ce qu'il fait. 'values_at' est génial, surtout s'il y avait plus de paramètres. –