[RUBY] Utilisez la méthode where pour affiner en vous référant à la valeur d'un autre modèle.

Aperçu

J'ai réduit plusieurs conditions en utilisant la méthode where, donc je vais les résumer.

Chose que tu veux faire

Je souhaite obtenir une information sur le modèle de développeur créé juste avant le moment où le modèle de produit a été créé.

Conditions préalables

Créer un modèle de produit et un développeur. Les deux modèles ne sont pas associés. (Osez ici) Le modèle Developer contient des informations (numéro_produit_développé) sur le type de produit fabriqué. Le produit a un numéro de produit et ces deux valeurs sont égales. (Si c'est le cas, associons-le, mais cette fois, nous utiliserons cette condition.) Je souhaite obtenir la valeur du développeur créé juste avant la création du produit à partir de plusieurs développeurs qui ont créé le même produit.

la mise en oeuvre

Mettons d'abord le code réel.

product = Product.find(params[:id])


@Developer = Developer.where(developed_product_number: product.id).where('created_at < ?', product).order(created_at: :desc).limit(1) 

C'est comme ça. Je vais expliquer

product = Product.find(params[:id])

Obtenez l'ID du produit cible et attribuez-le au produit variable. Ici, entrez la valeur qui a été réduite en ajoutant des conditions à la variable @Developer.

@Developer = Developer.where(developed_product_number: product.id).where('created_at < ?', product).order(created_at: :desc).limit(1) 

Divisez partiellement.

@Developer = Developer.where(developed_product_number: product.number)

Ici, l'identifiant du produit variable obtenu précédemment est obtenu.

Puis affinez les valeurs.

where('created_at < ?', product).order(created_at: :desc).limit(1) 

Ici, nous avons acquis les informations de plusieurs développeurs créés avant le moment où le produit a été créé et les informations du premier développeur en comptant dans l'ordre décroissant. Cela fait assez longtemps, donc le code ici doit être séparé en étendues et ainsi de suite.

Recommended Posts

Utilisez la méthode where pour affiner en vous référant à la valeur d'un autre modèle.
[Rails] N'utilisez pas la méthode de sélection uniquement pour réduire les colonnes!
Sortie de la façon d'utiliser la méthode slice
Comment utiliser la méthode link_to
Comment utiliser la méthode include?
Comment utiliser la méthode form_with
[Rails] Parlez de prêter attention à la valeur de retour de l'endroit
[Rails] Comment utiliser la méthode de la carte
[Java] Comment utiliser la méthode toString ()
Comment passer la valeur à un autre écran
[Rails] Procédure d'implémentation de la fonction pour taguer les posts sans gem + la fonction pour affiner et afficher les posts par tags
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Comment utiliser la méthode replace () (Java Silver)
[Introduction à Ruby] Comment utiliser la méthode slice
Passez un argument à la méthode et recevez le résultat de l'opération comme valeur de retour
Je veux appeler une méthode d'une autre classe
J'étais accro au record du modèle associé
[Java] Comment obtenir la valeur maximale de HashMap
[Rails] Je ne sais pas comment utiliser le modèle ...
Java: utilisez Stream pour trier le contenu d'une collection
Comment spécifier un tableau pour la valeur de retour / l'argument d'une méthode dans le fichier IDL CORBA
Comment utiliser la méthode getter / setter (en orientation objet)
Comment utiliser le modèle entraîné Tensorflow 2.0 avec Kotlin / Java
Utilisez collection_select pour extraire les données stockées dans Active_Hash
[Rails] Enregistrez-vous par attribut du même modèle en utilisant Devise
Vous pouvez résoudre le problème en vous référant aux deux articles !!!
Je souhaite utiliser la méthode de désinfection autre que View.
Comment modifier la valeur de réglage de Springboot Hikari CP
[Rails] Comment afficher une liste de messages par catégorie
Extension du modèle à 4 niveaux de l'architecture prônée par Eric Evans
Utilisez WHERE pour récupérer le résultat calculé à l'aide de la syntaxe Mysql
Récapitulatif des valeurs renvoyées par la méthode des caractéristiques Spliterator #java
[Rails] Où faire attention dans la description de la validation
Extraire la valeur identifiable de manière unique de la table créée par PostgreSQL
Je veux connaître la méthode du contrôleur où l'exception a été levée dans le ExceptionHandler de Spring Boot