在Rails中,如果枚举有空格,有没有办法访问其查询快捷方法?

问题描述 投票:0回答:1

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

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-rails activerecord enums model
1个回答
1
投票

是的,事实证明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 模块 为枚举值提供用户友好的文本。

© www.soinside.com 2019 - 2024. All rights reserved.