Rails 5.2 Ruby 2.6
Salut tout, P>
J'ai un modèle qui a le statut et la mise à jour_at créé_at Colonnes (a également peu d'autres colonnes). Les valeurs d'état possibles peuvent être "en attente", "Enroute", "Terminé". P>
Je veux interroger la table telle que: p>
Ce qui précède est une structure d'échantillon de la requête d'enregistrement actif. Cette requête n'imprime que les 24 heures seulement. Mais tous les autres statuts ne sont pas collectés. P> p>
3 Réponses :
includes(Model2: [:model3, :model4, :model5, :model6])
.where(conditions)
.where('(Model1.status = ? AND Model1.updated_at > ?) OR ( Model1.status != ?)', "Completed", 24.hours.ago, "Completed")
.order('Model1.created_at DESC')
Vous avez donc essentiellement besoin de cela:
Model.where('Completed', 24.hours.ago)
.or(Model.where(status: ['pending', 'enroute']))
Vous pouvez suivre, ou vous pouvez passer par arel code>, p>
Qu'est-ce qui ne va pas si vous exécutez cette requête? S'il vous plaît ajouter le problème / la sortie à votre question
Les lignes avec statut en attente et enroulées ne sont pas sélectionnées.
Votre question / où la clause suggère que c'est l'intention ... non?
Oui. c'est une mauvaise requête. Ce dont j'ai besoin en tant que sortie est différent. c'est dans la description du problème
Votre requête selon votre question est correcte. Peut-être que vous formulez votre question de mauvaise question?
Je vois maintenant, mais vous voudrez peut-être reformuler votre question pour être plus clair ... et expliquer la sortie actuelle de la sortie attendue.
J'ai fait des changements. maintenant est-ce compréhensible?
Que se passe-t-il pour d'autres États? Pour ex: "en attente" suit également la même structure? I.e Seulement en attente avec mis à jour à l'intérieur des dernières 24 heures devrait venir et tous les autres objets avec l'état autre que "en attente" devraient venir?
non. Seul le statut terminé dans les 24 heures, ainsi que tous les enregistrements en route et en attente doivent venir
En bref, tous les enregistrements doivent être récupérés avec tous les statuts différents. Si le statut est terminé, seuls les enregistrements terminés que les enregistrements terminés, mis à jour au cours des dernières 24 heures, sont extraites avec l'enregistrement de statut en route et en attente.
Quels RDBM utilisez-vous?