是否可以在Rails中创建这样的枚举?
enum status: [:public, :private]
导致我抛出一个错误,说公共方法将创建到这个枚举,并且有意义,所以我会有这样的事情:
object.public!
例如。
答案 0 :(得分:1)
不幸的是,ActiveRecord不允许您定义包含public
或private
(或new
等)的枚举,因为它们保留了方法名称。已经报告了issues,但他们已经关闭,因为无法修复。
如果您的状态枚举只是public
或private
,那么将其存储为布尔值会更有意义。你可以创建一些方法来表现得像他们做一个enum来做你想做的事。在你的模型中:
def public!
self.public = true
end
def private!
self.public = false
end
如果您创建一个布尔列来设置默认值,请不要忘记:
add_column :people, :public, :boolean, default: false