2013-06-27 32 views

回答

0
(duration.split('.').first.to_i * 3).to_s + '.days' 
+0

有schedule_date(由用户选择的任何日期),并希望增加持续时间如:2.days等与schedule_date。 {:run_at => schedule_date +持续时间)}。它工作正常,但想要乘以一个整数(3或任何)与持续时间 –

3

如果你的意思是要使用的辅助方法:

2.days 
# => 2 days 

2.days * 3 
# => 1036800 

如果你的意思是到m anipulate字符串:

duration = "2.days" 
p = duration.split('.') 
[ p[0].to_i * 3, p[1] ].join('.') 
# => "6.days" 
+0

其实我有:{:run_at => 2.days.from_now)}并且想要乘以2与3得到{:run_at => 6 .days.from_now)} –

+0

'(2.days * 3).from_now'和'(2 * 3).days.from_now'都会产生正确的答案。如果你只有一次,那么'Time.now +(future_time - time.now)* 3'应该是未来的三倍。 – tadman

+0

有schedule_date(用户选择的任何日期),并希望添加如下时间:2.days等与schedule_date。 {:run_at => schedule_date +持续时间)}。它工作正常,但想要乘以一个整数(3或任何)与持续时间。 –

0
duration = "2.days" 
duration[0] = (duration[0].to_i * 3).to_s 
p duration # => "6.days" 
1

当你要开始一个字符串,并导致一个字符串,那么正则表达式通常是最好的方法。如果你想乘串像“5.months 2.days 3.minutes”

"2.days".sub(/\d+/){|s| s.to_i*3} 
2

下面的代码是有用

"5.months 2.days 3.minutes".gsub(/\d+/){|s| s.to_i*3} 
=> "15.months 6.days 9.minutes"