-1
votes

Modèle.where () avec plusieurs paramètres avec chèque s'ils sont présents dans des rails

Je suis nouveau dans les rails. J'ai commencé à travailler sur un POC.

mon code de contrôleur est ci-dessous: xxx

mais je ne pense pas que ce soit une bonne approche. Considérez si j'ai de nombreux paramètres, mettez ensuite présent? condition puis former une requête deviendrait complexe. Ou puis-je former une requête séparément puis placez-la dans la condition d'instance variable.

Quelle est la meilleure approche?


0 commentaires

3 Réponses :


4
votes

Vous pouvez ajouter où code> instelements incrémentiellement lorsque chaque paramètre est présent:

@xyz = Seeker.scoped
@xyz = @xyz.where(id: params[:id]) if params[:id].present?
@xyz = @zyx.where(mobile_number: params[:mobile_number]) if params[:mobile_number].present?


2 commentaires

De cette façon, je pense que je n'aurai pas beaucoup de contrôle tout en écrivant la requête de DB. Comme se joindre / ou la condition / dans la fonction, etc ... suis-je raison?


Je ne peux pas voir "rejoindre" S ou "ou" des requêtes "ou" sur votre exemple. Mais ActiveRecord a en effet la méthode de "rejoindre" et "ou" requêtes Guides.RubyonRails. Org / ... Guides.RubyonRails.org/...



0
votes

hi Je suis nouveau dans les rails

Si vous utilisez un petit projet, une petite base de données, vous pouvez utiliser Ruby's , et jetez un coup d'œil à la réponse d'Arieljuod. Mais si vous voulez faire votre fonctionnalité de recherche est plus rapide, plus profond, ... vous pouvez trouver des pierres précieuses:


0 commentaires

0
votes

Si vous souhaitez trouver un enregistrement basé sur chaque paramètre arrive et que vous avez une valeur selon laquelle la meilleure façon d'utiliser est xxx

compact supprimera nil valeur de paramètres et recherchez directement avec le paramètre existant.

Note: Il ne supprimera que nil pas "" / forte> chaîne vierge


1 commentaires

Mais si la valeur d'identification est-elle présente dans la demande d'URL? est-ce que ça marchera?