【发布时间】:2021-06-05 03:56:21
【问题描述】:
我有一个带有枚举属性的模型,称为“状态”。其中一个值(“进行中”)有一个空格。
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"?
【问题讨论】:
-
我认为你应该将你的枚举更改为
enum status: [:scheduled, :in_progress, :final]只是为了避免所有的WAAT!?!它可能导致的时刻。使用 I18n 模块将枚举状态映射到用户友好的文本。 -
例如,如果我必须在您的应用程序上工作并且不得不花费 20 分钟发现我必须使用
game.statuses[:"in progress"]而不是预期的game.statuses[:in_progress]来获取枚举映射,我不会非常高兴。 -
非常聪明的@max - 答案已更新 - 谢谢!
标签: ruby-on-rails activerecord enums model