コードを実装するには、Rails の方法を使用する必要があります。
@order.payments.each do |payment|
if payment.monthly
payment.nb_of_times.times do |nb_month|
payment.date = payment.date + nb_month.months # this is awkward because of the variable name
payment.save
ordered_payment << payment
end
else
ordered_payment << payment
end
end
(.times
メソッドは非常に便利です。整数 (Fixnum) ごとに、.times
X 回反復するために呼び出すことができます)
ここで使用するもう 1 つの非常に便利な方法は.months
、整数 (Fixnum) で使用できるものです。Integer を Date の月数に変換します。.years
、.hours
、.weeks
などでも機能します。
irb(main):008:0> Time.now + 1.years
#=> 2014-03-05 10:09:58 -0500
irb(main):009:0> Time.now + 1.months
#=> 2013-04-05 10:10:01 -0400
irb(main):010:0> Time.now + 1.hours
#=> 2013-03-05 11:10:04 -0500
irb(main):011:0> Time.now + 1.seconds
#=> 2013-03-05 10:10:08 -0500
# With a variable:
irb(main):014:0> Time.now + Patient.first.id.hours
Patient Load (1.1ms) SELECT "patients".* FROM "patients" LIMIT 1
#=> 2013-10-08 06:12:04 -0400