用RoR表示一年时间?

4

假设你正在实现一个出版物数据库,并创建迁移以表示不同的出版物。每个出版物都有一个与之相关联的“年份”。

t.column :year, ???

这个“年份”最好表示为整数、日期还是日期时间?

3个回答

9

我建议使用整数。 DateDateTime 都比你想要的精度更高,这可能会误导你。即使你只初始化了年份,它们也会存储默认的月份和日期(1月1日)。例如,如果你使用了 Date,你的输出将会是这样的:

>> m = YourModel.create(:year => '2008')

>> m.year.to_s
=> "2008-01-01"

如果使用整数,您会得到您所期望的结果:

>> m = YourModel.create(:year => '2008')

>> m.year.to_s
=> "2008"

1
但是您可以使用简单的格式助手仅显示年份。此外,您可以从日期模块中获得助手以进行比较等操作。如果您需要存储日/月,也不需要进行重大架构修改。 - mwilliams
1
我不知道谁给你点了踩,但我给你点了赞。如果你只需要年份,使用整数是很好的选择。如果你需要更多的细节,可以使用日期。就是这样。干得好,Gordon。 - Patrick Desjardins

7

我建议遵循Rails的惯例,使用Date数据类型。这样,如果您将来确实需要月份和日期,可以轻松获取。而且,这样做非常简单:

YourModel.date.year  # => "1999"

0

嗯,如果你只关心年份,整数就足够了。如果你不确定自己永远不需要月份和日期,则使用日期格式;如果你还可能需要小时/分钟/秒钟,则使用日期时间格式。但是,如果你需要日期时间格式,那么它就不应该被称为“年”:-)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接