You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails中编写Enum根据键查找对应值的函数方法

问题修复方案

原代码错误原因

  • 缺少待查找的目标键入参,函数无法获知需要匹配的键值
  • 条件判断逻辑错误:AaaBbb.numbers[:key]是固定查找键为:key的枚举值,和遍历得到的key无关联,完全无法完成匹配
  • 循环逻辑存在致命缺陷:无论第一次迭代是否匹配,都会直接执行return终止函数,永远不会遍历后续的枚举项

最优实现代码

Rails 枚举的numbers方法本质返回的是标准Ruby Hash,直接使用Hash原生的fetch方法即可实现需求,无需手动遍历:

def find_value(target_key)
  # 将传入的键统一转为字符串,兼容符号/字符串入参,同时适配两种枚举定义写法
  AaaBbb.numbers.fetch(target_key.to_s, 0)
end

逻辑说明

  • 入参target_key接收你需要查找的枚举键,支持传入符号(如:a)或字符串(如"a")
  • target_key.to_s将入参统一转为字符串格式,适配你两种枚举定义的写法,避免类型不匹配导致的查找失败
  • fetch方法会自动匹配Hash中对应的键:匹配成功直接返回对应枚举值,匹配失败则返回你指定的默认值0

内容的提问来源于stack exchange,提问作者wpppppp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:06:01