Les produits sont en vente sur un site Web dans un délai limité. Chaque vente commence à DATE
, se termine par DATE
et contient au moins un produit.Ai-je besoin de réécrire cette requête SQL dans Rails ActiveRecord?
Chaque produit est associé au numéro d'identification de la vente à laquelle il appartient. Parfois, il y a une courte période de temps où il n'y a pas de produits dans une vente, parce que le gestionnaire a créé la vente mais n'a pas encore fini d'associer les produits à la vente, donc je dois filtrer les ventes sans produits à l'intérieur. liste des ventes à venir, ou il va confondre les utilisateurs.
Dans mon Sale
modèle, je suis venu avec ce que je ne suis pas familier avec ActiveRecord:
def upcoming_sales
find_by_sql(["SELECT DISTINCT sales.* from sales, products WHERE products.sale_id = sales.id AND sales.start_at > ? AND sales.start_at < ? ORDER BY sales.start_at ASC", Time.now, (Time.now + END_AT)])
end
Je crois que le SQL ci-dessus est standard SQL ANSI qui devrait fonctionner sur à peu près tous les serveurs de base de données , mais peut-il être fait avec ActiveRecord à la place?
En plus de le rendre convivial pour les utilisateurs non-SQL, y a-t-il des avantages à le refaire avec ActiveRecord?
Quelle est la meilleure façon d'améliorer les performances?