【发布时间】:2022-11-20 15:41:03
【问题描述】:
假设我们有这个简单的模型:
class Project < ApplicationRecord
enum stage: {Idea: "idea", Done: "done", "On hold": "on hold", Cancelled: "cancelled"}
enum status: [:draft, :published, :archived]
end
当我们从模型(Project.stages、Project.statuses)访问枚举时,我们得到一个经过处理(通过 ActiveRecord::Enum)的响应,两者都是哈希值。
irb(main):001:0> Project.stages
=> {"Idea"=>"idea", "Done"=>"done", "On hold"=>"on hold", "Cancelled"=>"cancelled"}
irb(main):002:0> Project.statuses
=> {"draft"=>0, "published"=>1, "archived"=>2}
我很难知道什么时候将枚举声明为哈希或仅具有模型和枚举名称的数组。
关于如何从枚举中获取初始哈希或数组的任何想法?
【问题讨论】:
-
为什么你需要知道?您试图通过确定枚举的定义方式来解决什么问题?你想区别对待
enum status: %i[draft published archived]和enum status: { draft: 0, published: 1, archived: 2 }吗? -
@muistooshort 是的,我正在为 Avo (avohq.io) 开发一项功能,我需要稍微区别对待它们
-
如果无法解决这个问题,我们需要让开发人员指定枚举的类型,我们正在努力避免这种情况
-
我不认为你可以,source 只是检查它如何迭代值(
each_pair如果它是哈希,each_with_index否则)。 -
我想知道我们是否可以通过某种方式获得 source 收到的
values参数
标签: ruby-on-rails activerecord enums