Commit 7f5e7e64 by liyijie

fix: try_chain error for numeric key

parent 1c20b6c1
......@@ -245,11 +245,14 @@ module TalltyImportExport
def try_chain(payload, arr)
arr.reduce(payload) do |r, m|
if m =~ /^\d+$/
next nil unless r # 如果 r 为 nil,直接返回 nil 结束循环
if m =~ /^\d+$/ && r.is_a?(Array)
index = m.to_i
r[index] if r.is_a?(Array) || (r.respond_to?(:[]) && index < r.size) # If r is an Array or responds to :[]
r[index] if index < r.size # 如果 m 是数字,并且 r 是数组
else
r.try(m) || r.try(:[], m) || r.try(:[], m.to_sym)
# 尝试按哈希键或方法访问
r[m] || r[m.to_sym] || (r.respond_to?(m) ? r.send(m) : nil)
end
rescue StandardError
nil
......@@ -259,7 +262,7 @@ module TalltyImportExport
def try_method(payload, method, prefix: nil)
prefix_arr = prefix.to_s.split(/\./)
arr = method.split('.').flat_map { |m| m.include?('[') ? m.split(/\[\s*|\s*\]/).reject(&:empty?) : m }
try_chain payload, prefix_arr + arr
try_chain(payload, prefix_arr + arr)
end
# 根据数据类型 attr_type 进行数据的格式化
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment