Je suis conscient que je peux rechercher des requêtes en appelant where()
sur un modèle comme suit: Post.where(:title => 'My First Post')
Comment effectuer une recherche dans Rails3?
Cependant, si je ne sais pas si l'utilisateur veut filtrer les paramètres de recherche? Par exemple, j'ai un formulaire de recherche qui a un champ optionnel title
. Si le titre est rempli, le formulaire doit rechercher un titre. Si ce n'est pas le cas, cependant, le formulaire devrait juste retourner tous les champs.
J'ai essayé de faire quelque chose le long des lignes de
search = Post.all
if params[:title].present?
search.where(:title => params[:title])
end
Cependant, Rails retourne immidiately le résultat de la recherche quand je l'appelle Post.all et je ne peux plus ajouter des conditions/
Comment puis-je faire ce?
Merci!
Alors comment puis-je obtenir la ressource sans récupérer les champs afin que je puisse continuer à appeler des conditions sur elle? Merci! –
Une option consiste à définir 'search = Post.unscoped' ou' search = Post.scoped' qui vous laissera avec une relation arel pour jouer avec. Vous pouvez également repenser la façon dont vous ajoutez des étendues de manière conditionnelle et essayer de les traiter plus élégamment dans le modèle. – idlefingers