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

JSON属性处理模式重构:如何实现可传属性名的通用清洗方法

问题核心原因
  • 调用方法时参数类型错误:直接写ingredients会被Ruby判定为未声明的局部变量,你需要传入属性对应的符号/字符串作为参数。
  • 方法内部取值逻辑错误:array_element[:element_attribute]是固定取名为element_attribute的键,没有使用你传入的element_attribute参数值。
修正后的基础实现
def empty_and_clean(array_element, element_attribute)
  return nil if array_element[element_attribute].nil?
  clean_str = array_element[element_attribute].tr('*$+!@#Â', ' ')
  clean_str.downcase.capitalize
end
正确调用方式

如果你的hash是符号键,调用时传入符号即可:

ingredients = empty_and_clean(article, :ingredients)

如果是JSON解析生成的字符串键,传入字符串即可:

ingredients = empty_and_clean(article, "ingredients")
兼容精简写法

使用Ruby 2.3+支持的安全导航运算符&.可以简化分支逻辑,同时兼容符号、字符串两种键类型:

def empty_and_clean(array_element, element_attribute)
  # 同时兼容字符串键和符号键取值
  val = array_element[element_attribute.to_s] || array_element[element_attribute.to_sym]
  # 安全导航运算符会在值为nil时直接返回nil,无需额外判空
  val&.tr('*$+!@#Â', ' ')&.downcase&.capitalize
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:15:08