Salut tout le monde j'ai besoin d'aide avec cette méthode: J'ai une méthode qui boucle les données de deux modèles et les compare; Si une correspondance est trouvée, je souhaite définir l'attribut de correspondance nih_pub sur true, puis renvoyer tous les nih_pub dont la correspondance est false. ça woks bien si j'utilise l'instruction si commentée if nih.pubyear == "2003" and nih.pmid == "12538806"
, mais il ne fonctionne pas avec la boucle.les rails changent la valeur booléenne dans une boucle
ci-dessous est la méthode que je suis en utilisant:
def compare
nih_pub = NihPublication.where(user: current_user).all
pubmed_pub = Publication.where(user: current_user).all
nih_pub.each{ |nih|
pubmed_pub.each {|pubmed|
if nih.pubyear == pubmed.publication_year and nih.pmid == pubmed.pubmed_id
# if nih.pubyear == "2003" and nih.pmid == "12538806"
nih.match = true
nih.save!
end
}
}
@missing = nih_pub.where(match: false)
end
Merci pour votre aide
On ne sait pas: êtes-vous avoir un problème avec la logique de condition du 'if' non commenté (et comment' if' a fonctionné correctement) OU avez-vous un problème avec la sortie de la boucle? –
vous pouvez écrire l'instruction 'return' dans la condition' if', de sorte qu'elle retourne de la boucle et vous donne '@ missing' comme sortie. –
Désolé; le problème que j'ai est que ce code n'est pas exécuté 'nih.match = true nih.save!'. si j'utilise l'instruction commentée if, tout fonctionne. – Idriss