Пытается преобразовать строки, такие как 9 weeks ago
, 1 year, 6 months ago
, 20 hours ago
в объект времени с рубином, например Tue, 10 Mar 2015 12:06:15 PDT -07:00
.Время от времени в словах convert into system date-time
Я делал это:
eval("10 days ago".gsub(' ', '.'))
Это прекрасно работает, но для строк, как 1 year, 6 months ago
взрывается.
мне просто нужно делать сравнения, как:
eval("10 days ago".gsub(' ', '.')) < (Time.now - 7.days)
Я использую Синатра так не фантазии не рельсы хелперы.
«Пожалуйста, никогда не используйте eval в производственном коде» -> Неразумное использование 'eval' ... ... неразумно, так же, как неразумное использование любой языковой функции. Пока вы знаете, что делаете, 'eval' в порядке. Это относится ко многим другим языковым функциям (а не только к 'eval'). В этом * конкретном случае, 'eval', вероятно, не очень мудрый, так как« 10 дней назад », вероятно, будет введен пользователем – Carpetsmoker
Хорошая точка. Просто я предпочитаю говорить в абсолютах о чем-то «опасном», таком как «eval» для кого-то (относительно) неопытного. Очень легко начать думать: «О, да, это должен быть один из таких случаев. Позвольте мне просто вывести ol« eval »без правильной перспективы. – octagonal