ruby-on-rails - 在 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"?
解决方案
是的,事实证明 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 模块,它为枚举值提供用户友好的文本。
推荐阅读
- java - JUnit4 无法加载应用程序上下文
- python - 在 python 中拟合二次高原 - scipy optimize.curve_fit 函数返回值取决于条件参数
- reactjs - 反应状态不使用最新状态
- javascript - 使用纯 JavaScript 解除事件委托、多参数事件侦听器的绑定
- sql - 从 xml 节点中选择节点
- python - 如何使用 Django ORM 对中间模型相关的两个模型进行求和
- javascript - 为gridjs中的行添加rowId
- flutter - 我可以使用 Githubpages 来部署我的 Fullter Web 产品组合吗?
- python - 从图例中删除点
- r - 根据条件将值从一行复制到另一行