0
votes

Comment trouver où Has_one: par l'association n'est pas nul dans les rails

Nous avons des images sur notre site que les utilisateurs peuvent sélectionner des images de profil pour leurs comptes. Voici les lignes correspondantes dans les modèles:

>> User.first.profile_image
=> nil
>> User.second.profile_image
=> #<ProfileImage id: 2, image_id: 9, user_id: 6, created_at: "2019-10-26 17:52:37", updated_at: "2019-10-26 17:52:37">


1 commentaires

La fonctionnalité à travers: si je comprends bien, est destinée à beaucoup de nombreuses relations. Iow, c'est une table de jointure avec Attributs ajoutés. C'est un modèle avec un comportement de la table de jointure. Donc, vous pourriez changer le has_one à has_many (même s'il n'y en ait qu'un) ou essayez de créer cette relation de manière différente. Je ne suis pas un expert et j'aimerais entendre les autres aussi.


3 Réponses :


0
votes

Je pense que cela devrait fonctionner:

User.joins(:profile_image)


0 commentaires

1
votes

Installez et utilisez où_exist gem xxx


0 commentaires

0
votes

has_one n'a pas d'identifiant d'image stocké sur la table des utilisateurs. Par conséquent, votre requête d'origine est irrationnelle.

Donc, en fonction de votre description, je vais suggérer de compter les images (HAS_One signifie que chaque image appartient à un utilisateur)

profilImage.count

semble trop simple pour être vrai, n'est-ce pas?


1 commentaires

Merci, coureur! Mais je dois utiliser les dossiers retournés dans une vue, alors obtenez-en simplement un nombre d'entre eux n'aide pas.