Ruby on Rails Tuesday, September 24, 2013

Thanks for your help everyone.

I ended up using Chronic Duration gem.

https://github.com/hpoydar/chronic_duration


On Sunday, September 22, 2013 3:58:58 PM UTC+8, Colin Law wrote:
On 20 September 2013 08:30, Fai Wong <wong...@gmail.com> wrote:
> If I store 1.month as a string in the database, how do I convert "1.month"
> into 1.month?
>
> This way I can use the "1.month" value stored in database to perform the
> following calculation.
>
> Time.now + 1.month

If you really feel you need to do this then you can store "1.month" as
a string and use eval

1.9.3p194 :007 > delta = "1.month"
 => "1.month"
1.9.3p194 :008 > Time.now
 => 2013-09-22 08:52:13 +0100
1.9.3p194 :009 > Time.now + eval( delta )
 => 2013-10-22 08:52:23 +0100

However if you do this be /very/ careful about what can get into the
database as arbitrary code can be executed using eval and conceivably
your machine could be hacked.  I DO NOT recommend that you do this.
If your requirement is for a delta with values such as 1 month 3 weeks
and so on, then I suggest having two fields, one for the quantity and
an enumerated value for the period (month, week and so on).  Then work
it out in code.  Less efficient but /much/ safer.

Colin

>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/a19f9925-f725-4cd5-9dfd-6c8c4b897bd6%40googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/9273b7f1-c2bc-4776-9ab1-25f77341af30%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments:

Post a Comment