1

Rails アプリケーションでランダム データを生成しようとしています。しかし、小数の金額に問題があります。範囲の値が正しくないというエラーが表示されます。

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 に答える 1

4

2つの数値の間にランダムな小数が必要な場合は、サンプルを使用する方法はありません。代わりに、次のようにします。

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

他の2つの提案:
1。これを実装した場合、すばらしいが、標準に見えないRandom.date_between(:today...Date.civil(2010,9,11)).to_date
2. $variableRubyのグローバル変数を意味するので、おそらくそれは望ましくありません。

更新---実際にランダムな日付を取得する方法

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)>
于 2012-11-22T02:52:23.740 に答える