Rails中的枚举:大写还是小写?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails中的枚举:大写还是小写?相关的知识,希望对你有一定的参考价值。
在互联网上大多数提到JAVA枚举,无处不在提到枚举应该全部为大写(例如:ACTIVE
)。
像这里:Coding Conventions - Naming Enums
但是当涉及到Rails时,在所有示例和文档中,它们都使用小写枚举值(例如:'active'),就像这里:http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html
这是有道理的,因为rails还通过这些枚举的名称提供实例方法(例如:obj.active?)。这是Rails中的枚举被用作小写的唯一原因,还是有更多呢?当我们使用枚举作为小写时,我们也不同于惯例,是否应该这样?或者我们也应该在Rails中使用大写枚举?
例如,我的模型中有一个status
枚举,根据惯例,它可以是活动的,草稿的或非活动的,如果它是:
enum status: {active: 1, draft: 2, inactive: 3}
要么:
enum status: {ACTIVE: 1, DRAFT: 2, INACTIVE: 3}
哪一个和为什么?
在Rails中,枚举应该是snake_case
。
为什么?因为枚举用于构造方法名称。 Ruby中的方法名称应该是snake_case
according to the community convention。使用ALLCAPS
或CamelCase
会导致错误和混乱,因为Ruby会将此类标识符视为常量。
ActiveRecord::Enum与Java中的语言级枚举构造不具有可比性。
声明一个枚举属性,其中值映射到数据库中的整数,但可以按名称查询。 http://api.rubyonrails.org/classes/ActiveRecord/Enum.html
ActiveRecord :: Enum中的键映射不是常量。相反,它只是一个与Ruby样式元编程一起使用的列表,它添加了使位掩码列更容易(和更有趣)的方法。
在您的示例中,它实际上可以与:
enum status: [ :ACTIVE, :DRAFT, :INACTIVE ]
枚举类型是一种特殊的数据类型,它使变量成为一组预定义的常量。变量必须等于为其预定义的值之一。常见示例包括罗盘方向(NORTH,SOUTH,EAST和WEST的值)和星期几。 https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
Java中的枚举基本上是美化的switch语句,其中类常量表示可能的值。
这是有道理的,因为rails还通过这些枚举的名称提供实例方法(例如:obj.active?)。这是使用RAILS中的枚举作为小写的唯一原因
我认为这是主要原因,是的。拥有像obj.Active?
和obj.ACTIVE?
这样的方法,在红宝石中是非常单一的。一个人不需要任何理由。 :)
以上是关于Rails中的枚举:大写还是小写?的主要内容,如果未能解决你的问题,请参考以下文章
python中怎样输入一个包含小数的小写金额(整数部分不超过7位),将其转换为汉字大写金额,最后输出结果?
Ruby on Rails:before_save 字段为小写