41 votes

Meilleure façon de créer un DateTime aléatoire dans Rails

Quelle est la meilleure façon de générer un DateTime aléatoire dans Ruby / Rails? Essayer de créer un joli fichier seeds.rb. Va l'utiliser comme ça:

  Foo.create(name: Faker::Lorem.words, description: Faker::Lorem.sentence, start_date: Random.date)
 

132voto

Marc O'Morain Points 1257

Voici comment créer une date au cours des 10 dernières années:

 rand(10.years).ago
 

Vous pouvez également obtenir une date dans le futur:

 rand(10.years).from_now
 

36voto

Harish Shetty Points 38877

Voici un ensemble de méthodes pour générer un entier aléatoire, quantité, temps / date / heure dans une plage.

 def rand_int(from, to)
  rand_in_range(from, to).to_i
end

def rand_price(from, to)
  rand_in_range(from, to).round(2)
end

def rand_time(from, to=Time.now)
  Time.at(rand_in_range(from.to_f, to.to_f))
end

def rand_in_range(from, to)
  rand * (to - from) + from
end
 

Vous pouvez maintenant passer les appels suivants.

 rand_int(60, 75)
# => 61

rand_price(10, 100)
# => 43.84

rand_time(2.days.ago)
# => Mon Mar 08 21:11:56 -0800 2010
 

18voto

shingara Points 26980

Je préfère utiliser (1..500).to_a.rand.days.ago

2voto

Sergey Chechaev Points 123

Voici comment créer une date ce mois-ci:

 day = 1.times.map{ 0+Random.rand(30) }.join.to_i  
rand(day.days).ago
 

1voto

masterweily Points 334

autrement:

 (10..20).to_a.sample.years.ago
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X