Rails 关于 Rails Enum 的疑问

xiaobai2 · 2018年06月25日 · 最后由 lengcb 回复于 2018年06月26日 · 1087 次阅读

常规用法如下:

enum state: %w(a b c)
或者
STATUS = %w(a b c)
enum state: STATUS

突然好奇 enum 为什么不能这么用

enum xxx: class_methods
enum xxx: instance_methos
enum xxx: class_attribute

因为有时候%w里面的值可能是经过处理或者数据量太大的话。还依然去定义一个数组感觉不太妥吧,跟一些类方法或者实例方法(然后返回一个数组)更或者(class_attribute)怎么就不行呢?

没太看懂。第一、数组大了为啥不妥?第二、明显感觉违反 dry 原则啊😁 你也说到数组大,那下面一堆 enum xxx。。。。。。。。。。

lengcb 回复

就是写成这样的:

enum xxx: class_methods
def class_methods
程序处理……
%w(a b c d e f)
end

def self.class_methods ... 就行了,你没搞清类里的作用域问题

你这种写法是给这个类定义了一个 class_methods 的实例方法,3 楼是定义类方法的正确形式

需要 登录 后方可回复, 如果你还没有账号请 注册新账号