Je ces requêtes:Améliorer deux requêtes similaires
initial_date = NewUser.joins(:interactions)
.where('interactions.interaction_sub_type in (?)', types)
.where('interactions.interaction_type in (?)', actions)
.limit(1000).order('users.id asc').minimum(:updated_at)
last_date = NewUser.joins(:interactions)
.where('interactions.interaction_sub_type in (?)', types)
.where('interactions.interaction_type in (?)', actions)
.limit(1000).order('users.id asc').maximum(:updated_at)
Ils sont presque les mêmes, à l'exception du minimum
et maximum
.
J'essaie d'améliorer ce code, mais je n'ai aucune idée sur la façon de changer cela.
Je pensais que quelque chose comme
base = NewUser.joins(:interactions)
.where('interactions.interaction_sub_type in (?)', types)
.where('interactions.interaction_type in (?)', actions)
.limit(1000).order('users.id asc')
initial_date = base.minimum(:updated_at)
mais pour une raison quelconque, cela ne fonctionne pas. On dirait que ActiveRecord exécute la requête pour le base
, puis s'exécute à nouveau sur initial_date
.
Quel est le problème avec votre solution? Avez-vous une erreur ou quoi? – nsave