Ruby on rails 代表RoR的一年?

Ruby on rails 代表RoR的一年?,ruby-on-rails,ruby,Ruby On Rails,Ruby,假设您正在实现一个发布数据库并创建迁移来表示不同的发布。每个出版物都有一个与之相关的“年” t.列:年,? 今年最好用整数、日期或日期时间来表示吗?好吧,如果你只关心年,整数就可以了。如果您不确定永远都不需要月和日,然后是日期,如果您可能还需要小时/分钟/秒,那么是日期时间,但如果您需要日期时间,则不应称之为年:-)我建议使用整数。Date和DateTime的精度都比您想要的高,这可能会产生误导。即使您仅在一年内初始化它们,它们也将存储默认的月份和日期(1月1日)。例如,如果使用了Date,则输

假设您正在实现一个发布数据库并创建迁移来表示不同的发布。每个出版物都有一个与之相关的“年”

t.列:年,?


今年最好用整数、日期或日期时间来表示吗?

好吧,如果你只关心年,整数就可以了。如果您不确定永远都不需要月和日,然后是日期,如果您可能还需要小时/分钟/秒,那么是日期时间,但如果您需要日期时间,则不应称之为年:-)

我建议使用整数。
Date
DateTime
的精度都比您想要的高,这可能会产生误导。即使您仅在一年内初始化它们,它们也将存储默认的月份和日期(1月1日)。例如,如果使用了
Date
,则输出如下所示:

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

>> m.year.to_s
=> "2008-01-01"
如果您使用integer,您将得到预期的结果:

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

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

我建议只使用Rails约定并使用
Date
数据类型。这样,如果您确实需要月份和日期,您可以检索它。此外,这很容易做到:

YourModel.date.year  # => "1999"

但您可以使用简单的格式帮助器仅显示年份。此外,您还可以从“日期”模块接收帮助,以进行比较等。如果您需要执行存储日/月,则不需要对模式进行重大修改。我不知道是谁否决了您,但我支持您,如果您只需要一年,则使用整数是非常好的。如果需要更多详细信息,请使用日期。就这样。很好的电话,戈登。