Rails枚举:公共和私人

时间:2017-11-18 14:13:00

标签: ruby-on-rails ruby

是否可以在Rails中创建这样的枚举?

enum status: [:public, :private]

导致我抛出一个错误,说公共方法将创建到这个枚举,并且有意义,所以我会有这样的事情:

object.public!

例如。

1 个答案:

答案 0 :(得分:1)

不幸的是,ActiveRecord不允许您定义包含publicprivate(或new等)的枚举,因为它们保留了方法名称。已经报告了issues,但他们已经关闭,因为无法修复。

如果您的状态枚举只是publicprivate,那么将其存储为布尔值会更有意义。你可以创建一些方法来表现得像他们做一个enum来做你想做的事。在你的模型中:

def public!
  self.public = true
end

def private!
  self.public = false
end

如果您创建一个布尔列来设置默认值,请不要忘记:

add_column :people, :public, :boolean, default: false