Comment écrire l'instruction :condition si je veux obtenir tous les enregistrements créés aujourd'hui ?
Réponses
Trop de publicités?Je sais que cette question a une réponse acceptée. La solution proposée dans la réponse acceptée peut entraîner des problèmes de performances lorsque la taille de la table augmente.
En général, si vous effectuez des recherches basées sur les éléments suivants created_at
ajoutez un index sur la table dans votre fichier de migration.
add_index :posts, :created_at
Maintenant, pour rechercher les enregistrements créés aujourd'hui :
Rails 3/4
Post.where("created_at >= ?", Time.zone.now.beginning_of_day)
Pour consulter les messages créés un jour donné.
Post.where(:created_at => (date.beginning_of_day..date.end_of_day))
--------- OU -------------
Ajoutez une méthode statique à votre modèle
class Post < ActiveRecord::Base
def self.today
where("created_at >= ?", Time.zone.now.beginning_of_day)
end
end
Post.today #returns posts today
Rails 2
Post.all(:conditions => ["created_at >= ?", Time.zone.now.beginning_of_day])
--------- OU -------------
Ajouter un named_scope à votre modèle
class Post < ActiveRecord::Base
named_scope :today, lambda {
{
:conditions => ["created_at >= ?", Time.zone.now.beginning_of_day]
}
}
end
Post.today #returns posts today