Ruby on rails用于命名日期/时间字段的约定



我想做一个这样的支架:

rails generate scaffold Job started_at:datetime completed_at:datetime price:decimal paid_at:datetime estimated_completion_at:datetime comment:text

我在日期时间字段中添加了"_at",因为这似乎是一种惯例,因为rails时间戳字段要么表示日期时间,要么表示日期。但这实际上是一个惯例吗?如果我只是用"payd"代替"paid_at",用"completed"代替"completed_at",可以吗?

我真的想从一开始就做好这件事。我已经用c#编程很多年了,但我对ruby on rails还是个新手。我喜欢所有的惯例,我想确保我这样做是正确的"轨道方式"。

我不知道任何特定的rails约定,这其实并不重要,因为rails中没有任何非日期时间字段的键。我一直采用的惯例是用_at作为datetime列的后缀,用_on作为date列的后缀。在某一天、某一时间说出来似乎总是更自然。

如何命名日期和时间列不是官方规定的约定,也不会影响代码的工作方式。然而,如果你想走"Rails之路",你可能应该遵循Rails社区普遍接受的惯例。

  • 首先,有一个社区驱动的RubyonRails样式指南,但它不包含任何日期列命名约定。

  • 一个提示是"活动记录"时间戳列,如@sierrasdetandil在其答案中指出的created_at

  • 了解一些惯例的另一种方法是查看流行Rails商店的Rails风格指南。例如,思想机器人在其风格指南中的状态:

  • _on后缀命名日期列
  • 使用_at后缀命名日期时间列
  • _time后缀命名时间列(指一天中没有日期的时间)

这将帮助您为列找到好的名称,并防止其他开发人员混淆。我认为这是一个很好的惯例,你也可以,只要你没有令人信服的理由用不同的方式命名你的专栏。

实际上,Rails中有一个约定,用于两个特定时间戳列的名称:created_atupdated_at具有特殊行为。从…起活动记录基础——RubyonRails指南;2.2模式约定

还有一些可选的列名将为活动记录实例添加附加功能:

  • created_at-自动设置为首次创建记录时的当前日期和时间
  • updated_at-无论何时更新记录,都会自动设置为当前日期和时间

那一页没有提到以"_on"结尾的列名。

这可能不是Rails中的惯例,但在日期/日期时间列的末尾附加_at实际上是有意义的。与paid相比,paid_at提供了一个概念,即您正在处理日期/日期时间对象,而paid也可以是一个布尔值或一个解释付款状态的字符串。所以我想这不仅仅局限于Rails。

最新更新