Ruby on Rails 中的枚举

2024-05-26

我是一名 C# 程序员,我正在研究 ruby​​ on Rails。但我可能在心态或其他方面遇到了一些麻烦。

我有一个投票对象,该对象可以是赞成、中立或反对。

我通常会让投票对象有一个像这样的字段

private VoteEnum voteEnum = VoteEnum.Neutral

我到底怎样才能在红宝石中实现这一目标。

我发现了一些例子,例如:

def MyClass < ActiveRecord::Base
  ACTIVE_STATUS = "active"
  INACTIVE_STATUS = "inactive"
  PENDING_STATUS = "pending"
end

然后,当使用另一个类的模型时,我引用常量

@model.status = MyClass::ACTIVE_STATUS
@model.save

这对我来说似乎是正确的,但我的主要问题是如何告诉模型状态是枚举或包含的类型。

我希望你能理解我的问题,并希望你能帮助我理清这个问题。


Ruby 不像 C# 那样是严格类型的。但您可以使用验证来检查状态中的内容:

def MyClass < ActiveRecord::Base
    ACTIVE_STATUS = "active"
    INACTIVE_STATUS = "inactive"
    PENDING_STATUS = "pending"
    NUMERICAL_STATUS = 500 # this is weird but okay

    ALL_STATUSES = [ACTIVE_STATUS, INACTIVE_STATUS, PENDING_STATUS, NUMERICAL_STATUS]

    validates_inclusion_of :status, :in => ALL_STATUSES

end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails 中的枚举 的相关文章

随机推荐

  • 根据位置/日期更改日期选择器中的时间

    我在用着amsul 日期选择器和时间选择器 https amsul ca pickadate js time 我想根据选择的日期和复选框更改时间选择器的最小 最大小时 这是我的代码 var today new Date var tomorr
  • 将菜单添加到空活动

    我在 Android Studio 中制作了一个 Android 应用程序 并想在其上创建一个选项菜单 我将其创建为一个空活动 现在意识到我最好创建一个空白活动来获取选项菜单 无论如何 是否可以在空活动中创建选项菜单 如果有人能给我指出一个
  • 实时数据和草稿数据的数据库模型

    我一直在考虑在数据库中保存 实时 数据集和草稿数据集的最佳方法 实际版本会显示在网站上 草稿版本会一直进行下去 直到准备好上线为止 该模型是关系模型 由许多表组成 我目前的方法是拥有 2 个数据库 一个用于草稿 一个用于实时 当您将数据提升
  • 如何从 WPF 应用程序访问 Windows 文件预览图标

    我在一个目录中有一堆图片和视频 需要在WPF应用程序中显示 我正在考虑将Win7大图标本身显示为预览图像 因为这将节省我从视频文件中抓取适当帧的工作 因为 Windows 已经很好地完成了这项工作 有任何代码片段可以访问此 Shell 图标
  • 选择 matplotlib xticks 频率

    我正在用字符串作为 x 标签绘制数据 我想控制标签频率 以免文本使轴过载 在下面的示例中 我只想每 3 个刻度看到一个标签 a d g j 我可以做到这一点的一种方法是每 n 个元素用 2 个空字符串替换 my xticks 元素 但我确信
  • 我可以创建一个 List> 吗?

    我正在尝试创建一个列表WeakReference使用 4 5 泛型实现 这样我就可以避免类型检查和转换WeakReference目标 但 WeakReference
  • Windows PowerShell 查找文件中的重复行

    我需要使用 powershell 查找文本文件中的重复值 假设文件内容是 Apple Orange Banana Orange Orange 期望的输出应该是 Orange Orange 您还可以使用 Group Object cmdlet
  • 如何找到所有带有某种装饰的类?

    在Java中 我们可以使用 类路径扫描 找到具有给定注释的所有类 我们如何在 TypeScript 中做类似的事情 有没有办法找到所有装饰有某种装饰的类 这是一个例子 它假设您有某种方式引用范围 这magical类装饰器创建一个名为的字符串
  • Node.js 进程内存不足错误

    FATAL ERROR CALL AND RETRY 2 Allocation Failed process out of memory 我看到这个错误 但不太确定它来自哪里 我正在从事的项目有以下基本工作流程 从其他来源接收 XML 帖子
  • Xcode 6 Launchscreen.xib 具有适用于 iPad 横向和纵​​向的不同资源

    使用 Xcode 6 中引入的 LaunchScreen 我可以定义用于 iPad 横向和纵 向的不同资源吗 由于两个 iPad 方向的特征是相同的 遗憾的是 顺便说一句 我无法区分两者 这是否意味着 要么对 iPad 横向和纵 向使用相同
  • 我们可以在displaytag中使用rowspan和colspan吗?

    我必须创建一个表 其结构是这样的 col1 col2 col3 col4 col3 1 col3 2 是否可以使用显示标签创建这样的数据网格 查看装饰器示例 http displaytag sourceforge net 1 2 tut d
  • 除了前一个按钮意图之外,如何添加另一个按钮意图?

    这是我的代码 它包含一个名为的按钮button1A当我单击它时 它会打开一个名为的列表list1 如何为另一个名为 button2A 的按钮添加代码 该按钮将打开一个列表 List2 import android os Bundle imp
  • Django如何通过模板修改数据库记录

    我想删除我选择的记录 并且run html将会刷新 我该怎么做 由于我使用函数run在views py中发送数据库中的记录 以及run需要一个参数构建 可以通过使用获得run name 所以我认为当我单击提交按钮时 我需要传递 run na
  • 从 Python 脚本创建可执行文件,同时获取较小的输出大小

    我的问题可能已经在某个地方得到了解答 但我仍然找不到直接的答案 我想从 python 代码创建一个独立的可执行文件 我已经尝试过很多解决方案 例如py2exe pyinstaller等等 但我的问题是输出文件大小很大 例如 在pyinsta
  • Eclipse CDT C/C++:包含另一个项目的头文件

    我在 Eclipse CDT 中有两个 C 项目main and shared In shared我有一个名为calc h 我想在中使用这个标头main 所以我做了以下事情 added include calc h到相关文件main In
  • Android 中的定制数字时钟

    您好 我想以 HH mm AM PM 的格式在我的应用程序中显示时间 数字时钟还包括秒 即 HH mm ss 上午 下午 如何避免显示秒 有没有什么可行的办法 请帮助我 您必须克隆该文件DigitalClock java要在您的应用程序中使
  • Sass 与 BEM,继承选择器

    我正在使用 Sass 3 4 1 和 BEM 所以我的 scss 是 photo of the day title font size 16px 我希望每次将鼠标悬停在 photo of the day标题发生了一些事情 这很常见 所以通常
  • intfmt: db "%d", 10, 0 在汇编中的含义

    我最近在我的一个汇编文件的顶部看到了这个 并意识到我在打印整数的过程中花了很长时间使用它 而没有真正意识到它最初来自哪里 在我的基本汇编模板中使用 或 10 0 是什么结尾的意思是 section data intfmt db d 10 0
  • 寻找基于循环固定大小数组的双端队列

    我正在寻找一个Deque其具有以下特点 它有固定的大小 如果我在头 尾添加元素 则另一端的元素会丢失 它是基于数组的 所以我可以在恒定时间内访问随机元素 我可以在前面或末尾添加元素 双端队列 我检查了Deque的实施JCF但我没有找到任何合
  • Ruby on Rails 中的枚举

    我是一名 C 程序员 我正在研究 ruby on Rails 但我可能在心态或其他方面遇到了一些麻烦 我有一个投票对象 该对象可以是赞成 中立或反对 我通常会让投票对象有一个像这样的字段 private VoteEnum voteEnum