ruby-on-rails - 为模型创建状态属性

标签 ruby-on-rails ruby activerecord model attributes

我想为我的 Task 模型创建一个 status 属性,该属性将按以下顺序指示它在三部分进度中的位置:打开 => 进行中 => 完成。它的工作方式类似于亚马逊包裹的交付方式:已订购 => 已发货 => 已交付。我想知道设置此属性的最佳方法是什么。我可能是错的,但创建三个独立的 bool 属性似乎有点多余。实现此目标的最佳方法是什么?

最佳答案

Rails 4 有一个内置的 enum macro .它使用单个整数列并映射到键列表。

class Order
  enum status: [:ordered, :shipped, :delivered]
end

状态映射如下:{ ordered: 0, shipped: 1, delivered: 2}

它还创建范围和“审讯方法”。

order.shipped?
Order.delivered.all

在编写带有散列参数的查询时,它还会映射枚举值:

Order.where(status: [:shipped, :delivered])

关于ruby-on-rails - 为模型创建状态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30964377/

相关文章:

ruby-on-rails - has_many :messages where user is recipient or author in one query

javascript - Rails js.erb 文件找不到方法 "render"

ruby-on-rails - 如何通过 has_many 关系的属性之和来过滤模型

javascript - Rails 4 - 从 ajax 更新表单中的值或数据属性并在 if 语句中使用此更新的值

mysql - Rails 4 - 从外部 MySQL 提取数据

ruby - Ruby 1.9 中非并发 Ruby 线程的优点?

ruby-on-rails - 抓取包含文本 nokogiri xpath 的元素

ruby-on-rails - Rails ActiveRecord 关联

ruby-on-rails - ActiveRecord::Error.type 如何影响验证错误消息?

ruby-on-rails - Rails 中的一个 Controller 有多个数据库表