在 Rails 中使用和测试日期

发布于 2024-11-03 20:49:26 字数 620 浏览 0 评论 0原文

我的应用程序经常使用日期。很多 ajax 调用和 url 都涉及日期时间,我发现典型的格式“1920-10-10 18:30:00”对于这些目的不友好。我通过创建一个辅助方法来解决这个问题,该方法基本上从日期中删除不必要的字符(192010101830),并创建另一种将字符串转换回日期对象的方法。

当我构建一个 url 时,它会像这样:

=link_to "Send Date", thing_my_date_path(date_to_string(DateTime.now))

然后当 thing_date 操作接收时,它将参数转换回日期时间对象

def my_date
  @date = string_to_date(params[:mydate])
  ....
end

这在开发中工作得很好。不过,我完全愿意接受其他建议。

问题是当我去测试我的应用程序时。测试失败,因为 date_to_string 和 string_to_date 的辅助方法不存在。我可以将它们包含在测试中,但我觉得它们应该分开。

所以我正在寻找
a) 一种更好的传递日期的方法,更重要的是

b) 一种测试依赖于辅助方法的操作的方法。

My application uses dates a lot. A lot of ajax calls and urls involve datetimes and I find the typical format '1920-10-10 18:30:00' to be unfriendly for these purposes. I work around this by creating a helper method that basically strips the unnecessary characters out of the date (192010101830) and another method for converting the string back in to a date object.

When I build a url it goes something like this:

=link_to "Send Date", thing_my_date_path(date_to_string(DateTime.now))

Then when the thing_date action receives, it converts the parameter back in to a datetime object

def my_date
  @date = string_to_date(params[:mydate])
  ....
end

This works fine in development. However I am completely open to other suggestions.

The problem is when I go to test my application. Tests fail because the helper methods for date_to_string and string_to_date are not present. I could include them in the tests but I feel like they should be kept separate.

So I'm looking for
a) a better way to pass dates around, and more importantly

b) a method of testing an action that is dependent on helper methods.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ま昔日黯然 2024-11-10 20:49:26

我认为有一些内置的方法。

> DateTime.now.to_s(:number)
=> "20110429162748" 
> DateTime.parse("20110429162748")
=> Fri, 29 Apr 2011 16:27:48 +0000 

希望有帮助..

There are built-in methods for that methinks.

> DateTime.now.to_s(:number)
=> "20110429162748" 
> DateTime.parse("20110429162748")
=> Fri, 29 Apr 2011 16:27:48 +0000 

Hope that helps..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文