/ / Генерування випадкових фіксованих десятків у рейках - рубін на рейках, рубін, випадковий, десятковий, валюта

Генерація випадкових фіксованих десяткових значень у регіонах - рубіни на рейках, рубінові, випадкові, десяткові, валюта

Я намагаюся генерувати випадкові дані в моїй програмі рейки. Але у мене виникають проблеми з десятковою сумою. Я отримую помилку говорячи про погане значення для дальності.

while $start < $max
$donation = Donation.new(member: Member.all.sample, amount:  [BigDecimal("5.00")...BigDecimal("200.00")].sample,
date_give: Random.date_between(:today...Date.civil(2010,9,11)).to_date,
donation_reason: ["tithes","offering","undisclosed","building-fund"].sample )
$donation.save
$start +=1
end

Відповіді:

4 для відповіді № 1

Якщо ви хочете випадкову десятковість між двома числами, зразок не буде таким шляхом. Натомість зробіть щось подібне:

random_value = (200.0 - 5.0) * rand() + 5

Ще дві пропозиції:
1. Якщо ви це реалізували, чудово, але це не виглядає стандартно Random.date_between(:today...Date.civil(2010,9,11)).to_date
2. $variable означає глобальну змінну в Ruby, тому ви, мабуть, цього не хочете.

ОНОВЛЕННЯ --- спосіб дійсно отримати випадкову дату

require "date"

def random_date_between(first, second)
number_of_days = (first - second).abs
[first, second].min + rand(number_of_days)
end

random_date_between(Date.today, Date.civil(2010,9,11))
=> #<Date: 2012-05-15 ((2456063j,0s,0n),+0s,2299161j)>
random_date_between(Date.today, Date.civil(2010,9,11))
=> #<Date: 2011-04-13 ((2455665j,0s,0n),+0s,2299161j)>