tl; dr comment puis-je obtenir la valeur correspondante avec la clé d'un objet? p>
Je suis confus pourquoi p>
Mais je dispose de la base difficile d'accéder à la valeur correspondante pour la clé: ID. P>
Je semble être incapable de vous ruby, ni de trouver une réponse succincte à cette question fondamentale avec mes compétences de recherche de Google (ou de manquer de). P>
merci p> ATag.where (tag: 'Marque') CODE> me donne ce que j'appellerais un objet faute d'un meilleur terme:
#
ATag.where (tag: 'marque'). ID code> et
ATag.where (tag: 'Marque') [: id] code> et
ATAG. Où (tag: 'marque') (: id) code> Toutes les erreurs de lancement, alors que dans ce cas, j'essaie d'avoir l'entier 1 retourné. p>
4 Réponses :
Obtenez l'identifiant de votre tag = 'Marque' avec la requête suivante:
Atag.find_by(id: 1) #gives the Atag with id 1 Atag.find_by_id(1). # same as above. Atag.find_by(id: 999) #if not found then simply returns nil. Atag.find_by(name: 'ruby') #return Atag object with name: 'ruby' Atag.find_by_name('ruby') #same as above.
Ceci est utile, mais différent de ce que je cherchais, car je devais pouvoir récupérer la valeur avec des connaissances uniquement de la clé. Vos exemples semblent assumer la connaissance de la clé et de la valeur pour récupérer l'objet. La raison pour laquelle je récupère les objets par: la balise au lieu de: ID est parce que j'ai la valeur de: tag mais pas le: id (qui est ce que j'essaie d'obtenir). Il y a presque certainement un meilleur moyen de mettre en œuvre ce que j'essaie de jouer avec des associations de dossiers actives, mais je travaille simplement sur une implémentation à partir de zéro pour le moment pendant que je suis plus confortable et inspiré en progressant.
Je ne suis pas grand sur la lecture de documents, sauf le strict minimum, mais à un moment donné dans un avenir proche, je vais bien passer à travers
@Laser, essayez-vous d'obtenir tous les objets ATAG ayant un nom de balise commun? Tout comme tu as fait Atag.where (tag: 'marque')? Ensuite, vous pouvez essayer Atag.Find_By (Tag: 'Marque')
Ah oui c'est beaucoup plus propre! Merci :)
Pouvez-vous éditer la réponse afin que la solution soit au sommet 'ATag.Find_By (Tag:' Marque '). Id' ou 'ATag.where (tag:' Marque '). PREMIER.ID'?
Super, merci :) j'espère que ça va être utile à quelqu'un à un moment donné
Yep, on dirait que vous l'avez compris. Pour référence, vous pouvez utiliser ATag.where (tag: 'marque'). Premier code> pour obtenir le premier résultat, et
ATag.where (tag: 'Marque'). TO_A CODE > Pour obtenir un tableau de tous les résultats correspondants. P>
où code> instance de retour de activerecord :: relation em> qui peut être traité comme un tableau
de tableau fort> avec ses membres. Même si le résultat est célibataire, il convient d'accéder à un élément de matrice avec un seul élément p> Atag.find_by(tag: 'brand').id
ah a attag.where (tag: 'marque') [0] .Id et cela a fonctionné
Je vois que la méthode "où" a renvoyé un objet d'objets, donc je devais spécifier que je voulais le premier objet.