Dea*_*ean 14 coding-style ruby-on-rails naming-conventions ruby-on-rails-3
我想做一个像这样的脚手架:
rails generate scaffold Job started_at:datetime completed_at:datetime price:decimal paid_at:datetime estimated_completion_at:datetime comment:text
Run Code Online (Sandbox Code Playgroud)
我在日期时间字段中添加了"_at",因为这似乎是惯例,因为rails时间戳字段对于datetime是"_at",对于date是"_on".但这实际上是一个惯例吗?如果我只是"付费"而不是"paid_at"和"completed"而不是"completed_at",这样可以吗?
我真的想从一开始就做到这一点.我已经用c#编程多年了,但我是ruby on rails的新手.我喜欢所有的约定,我想确保我正在做这个正确的'rails方式'.
Clu*_*ter 31
我不知道任何特定的rails约定,并且它并不重要,因为在rails中没有任何东西可以关闭datetime字段.我总是使用的约定是带有_atdate和date列的后缀datetime列_on.在一天一次说出来似乎更自然.
如何命名日期和时间列不是官方声明的约定,不会影响代码的工作方式.但是,如果您想要使用"Rails方式",您应该遵循rails社区中普遍接受的约定.
首先,有一个由社区驱动的Ruby on Rails样式指南,但它不包含任何日期列命名约定.
一个提示是Active Record时间戳列,就像created_at他们的答案中提到的@sierrasdetandil 一样.
通过查看流行的Rails商店的Rails风格指南,另一种弄清楚一些约定的方法.例如,他们的风格指南中的思想机器人状态:
- 命名带有
_on后缀的日期列.- 命名带有
_at后缀的datetime列.- 使用
_time后缀命名时间列(指没有日期的时间).
这将帮助您为列找到好名称,并防止其他开发人员混淆.我认为这是一个很好的约定,你也可以,只要你没有令人信服的理由以不同的方式命名你的列.
其实,有是两个特定时间戳列的名称在Rails的一个约定:created_at和updated_at有特殊的行为.来自
Active Record Basics - Ruby on Rails指南; 2.2模式约定
还有一些可选的列名称将为Active Record实例添加其他功能:
created_at- 自动设置为首次创建记录时的当前日期和时间.updated_at- 每当记录更新时自动设置为当前日期和时间.- ...
在该页面中没有提到以"_on"结尾的列名.