ruby-on-rails - Rails 5 - 使用枚举,当枚举值是保留字时怎么办?

标签 ruby-on-rails enums

我有一个简单的枚举(在 Rails 4.something 中添加)

enum direction_type: [:undefined, :loop, :out_and_back, :point_to_point]

哪个有效,但在日志中我看到了这个错误:
Creating scope :loop. Overwriting existing method Trail.loop.

另一个:
enum status: [:undefined, :new, :draft, :published]

Creating scope :new. Overwriting existing method Trail.new.

我不完全确定这些错误意味着什么,但它们听起来不太好!

我应该更改这些枚举还是有其他解决方案(例如我可以添加一些巧妙的范围规则来修复它们?)

最佳答案

即使您无法更改枚举值,您仍然应该能够解决与 的冲突。枚举前缀或后缀 . _prefix/_postfix枚举定义中的选项应该保持枚举的值不变,但会影响自动生成的 bool 值和 bang 方法名称 以及作用域名称 .

所以,像这样:

enum direction_type: [:undefined, :loop, :out_and_back, :point_to_point], _prefix: true

应该生成以下范围:direction_type_undefined , direction_type_loop等...这不会与现有的类方法发生冲突。

docs in the source code了解更多信息。

关于ruby-on-rails - Rails 5 - 使用枚举,当枚举值是保留字时怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39397621/

相关文章:

jquery - Rails 和 jquery 可排序

ruby-on-rails - 可以查询 Rails 中缓存的条目集合吗?

c++ - 在 C++ 中使用枚举进行面向整数位的操作是否可靠/安全?

c# - 以与 Enum 相同的方式将字符串值存储为常量

java - Java枚举注解值的枚举默认值

java - 默认情况下枚举的实例是静态的吗?

python - 使用大量内存将类定义为枚举

ruby-on-rails - ActionMailer 无法附加 HTML 文件

ruby-on-rails - Rails nginx 乘客在 linode VPS 上返回 http 301

ruby-on-rails - Rails 5.1 与 ElasticSearch 7.1 重建索引错误