首页 > 解决方案 > 在 Rails 中,如果枚举有空格,有没有办法访问它的查询快捷方式?

问题描述

我有一个带有枚举属性的模型,称为“状态”。其中一个值(“进行中”)有一个空格。

class Game < ApplicationRecord
  enum status: [:scheduled, :"in progress", :final]
end

我可以对其他值使用查询方法。

my_game.scheduled?
true

my_game.final?
false

my_game.final! => true

我可以通过更新属性将状态设置为进行中:

my_game.status = "in progress"

我可以通过检查属性来获取状态:

my_game.status
"in progress"

my_game.status=="in progress"
true

但是,有没有办法访问查询方法?

my_game."in progress"?

标签: ruby-on-railsactiverecordenumsmodel

解决方案


是的,事实证明 Rails 通过添加下划线使查询方法可用:

my_game.in_progress! => true

my_game.in_progress?
true

但是,您可以通过在枚举值中使用下划线来避免头痛:

enum status: [:scheduled, :in_progress, :final]

然后像往常一样引用查询方法:

my_game.in_progress?
false

my_game.in_progress! => true

my_game.in_progress?
true

之后,使用i18n 模块,它为枚举值提供用户友好的文本。


推荐阅读