在 Ruby 中,我有一个包含变量的哈希值.如何获取其命名空间



>我有一个包含变量的哈希值:

module Categories
  module Services
    PHOTOGRAPHY_VIDEO = "9115"
  end
end
hash = {"CatId" => Categories::Services::PHOTOGRAPHY_VIDEO}
puts(hash["CatId"]) # This returns "9115" but how do I get the "Services" category?

我想向 Ruby 询问变量"catId"等于"服务"的变量"值"的命名空间。我想做这样的事情:

def priced?
  (hash["CatId"]).unknown_method == Services
end

如何获取其命名空间?

我认为这是不可能的。给定诸如"9115"之类的值,则无法(除了详尽的搜索,只有在总数很少的情况下才实用)知道为特定视频设置了哪些常量。

如果您需要获取此信息,我会重新考虑您存储的数据 - CatId 键的值可能是包含更多信息的内容(例如,包含 id 和文本描述的结构)

Categories::Services::PHOTOGRAPHY_VIDEO 只是

该类中的一个常量。它的值与模型(您称之为命名空间)无关;在这种情况下,它只是一个字符串。您可以再次检查哈希值。

def priced?
  (hash["CatId"]) == Categories::Services::PHOTOGRAPHY_VIDEO
end
"#{hash["CatId"]}".include? 'Services::'

更新 =>

哦,我现在更清楚了

module Categories
  module Services
    PHOTOGRAPHY_VIDEO = "9115"
  end
end
hash = {"CatId" => "Categories::Services::PHOTOGRAPHY_VIDEO"}
eval hash["CatId"] # => "9155"

最新更新