这是代码。基本上,用户选择一个计费日(每月的第一天或每月的第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