Comment puis-je rechercher de la plage de dates dans les Rails avec la variable de date
Comment puis-je faire cela dans les rails d'enregistrement active¿?
trouver tous les modèles qui correspondent à (created_at + de 100 jours entre ce mois-ci)
Edit:
Ok, Désolé de ne pas être précis ce que j'essaie de faire dans l'enregistrement actif dans les Rails 3.0 façon:
select
distinct p.ID
from
patients p
inner join vaccines_patients vp on p.ID = vp.patient_id
inner join vaccines v on v.ID = vp.VACCINE_ID
where
month(vp.appliedAt + INTERVAL v.duration DAY) = month(now())
Je veux recevoir une requête similaire, mais en utilisant autant que dans l'enregistrement actif.
OriginalL'auteur Giancarlo Corzo | 2011-03-12
Vous devez vous connecter pour publier un commentaire.
Vous ne spécifiez pas de Rails 2 ou 3, et je ne suis pas entièrement sûr de ce que la gamme que vous cherchez, mais ce devrait vous obtenir a commencé. S'il vous plaît ajouter quelques exemples de dates et de dire s'ils doivent tomber dans votre gamme ou pas.
Dans les Rails 2 vous pouvez utiliser un named_scope dans votre modèle.
Dans Rails 3, vous pouvez utiliser un
scope
avec la nouvelle Arel portée méthodes:OriginalL'auteur jdl
Dans Rails 3, vous pouvez utiliser:
où
start_date
etend_date
sont classe Date.Ensuite, il suffit d'ajouter 1 jour supplémentaire, droite?
Oui, je pense que c'est parce qu'un Jour sans le Temps est interprété comme minuit le jour de l', ainsi, à tout moment au cours de cette Date est considérée en dehors de la plage. Si oui, ajouter un jour de plus.
Une gamme de .. ne comprend pas le dernier élément, mais ... il se doit. Essayez date_debut...end_date et voir si cela fonctionne
en fait c'est le contraire,
..
fonctionne du début à la fin, inclusivement,...
exclut la valeur de fin. La question est probable que d'autres l'ont mentionné, il doit êtreend_date.end_of_day
ouend_date + 1
. Source: ruby-doc.org/core-2.3.1/Range.htmlOriginalL'auteur Cristhian Boujon
ActiveRecord
pouvez créer une requête en utilisant unBETWEEN
lorsqu'il accepte unRange
. Cela sonne comme il pourrait être plus ce que vous cherchez.YourModel.where(created_at: 100.days.ago..100.days.from_now)
Il semble toujours un peu plus simple de faire ce que l'utilisation de
>=
<=
dans la requêteOriginalL'auteur Matt Polito
Si j'ai bien compris, vous avez besoin de quelque chose comme ceci:
ou dans le champ d'application (2 rails):
OriginalL'auteur santuxus