這是代碼。基本上,用戶選擇一個計費日(每月的第一天或每月的第15天)。 start_date
是當「合同」開始時,expire_date
何時到期。重構此代碼塊之間的Ruby/Rails代碼
因此,如果今天是第三位,並且他們希望在15日結算,那麼只需到當前月份的第15天即可。但是,如果今天是第三,他們希望在第一次進行結算,然後拿到下個月的第一天...等
if params[:billing_day] == 1 && start_date.day > 1
expire_date = start_date.at_beginning_of_month.next_month
elsif params[:billing_day] == 15 && start_date.day < 15
expire_date = start_date.change(:day => 15)
elsif params[:billing_day] == 15 && start_date.day > 15
expire_date = start_date.at_beginning_of_month.next_month.change(:day => 15)
else
expire_date = start_date.change(:day => params[:billing_day])
end
它只是似乎瘋了,當然也可以在Rails的簡化。謝謝!
簡短而甜美。完美的重構!謝謝 – 2012-08-04 01:31:49