Ceci est souvent mis en œuvre au moyen d'un champ nommé qui fait la restriction appropriée qui identifie les enregistrements sont visibles au point courant dans le temps:
class MyRecord < ActiveRecord::Base
named_scope :visible,
:conditions => 'visible_from<=UTC_TIMESTAMP() AND visible_to>=UTC_TIMESTAMP'
end
Ceci peut être modifié pour utiliser des supports de lieux pour dates plus arbitraires:
class MyRecord < ActiveRecord::Base
named_scope :visible_at, lambda { |date| {
:conditions => [
'visible_from<=? AND visible_to>=?',
date, date
]
}}
end
on peut supposer que les dates sont stockées en tant que UTC, car il est une nuisance considérable pour convertir un temps local à un autre aux fins de afficher.
Vous pouvez sélectionner tous les modèles visibles comme ceci:
@records = MyRecord.visible.all
@records = MyRecord.visible_at(2.weeks.from_now)
D'ailleurs, est-ce pas une question de SQL? –