3

変数を含むハッシュ値があります:

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?

「Services」に等しい「CatId」の変数「value」の名前空間をRubyに問い合わせたい。私はこのようなことをしたい:

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

名前空間を取得するにはどうすればよいですか?

4

3 に答える 3

4

これは不可能だと思います。「9115」などの値を指定すると、特定のビデオにどの定数が設定されているかを知る方法はありません (徹底的な検索は、合計数が少ない場合にのみ実用的です)。

この情報を取得する必要がある場合は、保存するデータを再考します。CatId キーの値は、より多くの情報を含むも​​のにすることができます (たとえば、ID とテキストの説明の両方を含む構造体)。

于 2012-10-17T13:31:26.290 に答える
1

は、そのクラスのCategories::Services::PHOTOGRAPHY_VIDEO唯一の定数です。その値はモデル (名前空間と呼ばれるもの) とは関係ありません。この場合は単なる文字列です。ハッシュ値を再度確認できます。

def priced?
  (hash["CatId"]) == Categories::Services::PHOTOGRAPHY_VIDEO
end
于 2012-10-17T13:31:46.023 に答える
0
"#{hash["CatId"]}".include? 'Services::'

更新=>

ああ、私は今それをより明確にした

module Categories
  module Services
    PHOTOGRAPHY_VIDEO = "9115"
  end
end

hash = {"CatId" => "Categories::Services::PHOTOGRAPHY_VIDEO"}

eval hash["CatId"] # => "9155"
于 2012-10-17T13:35:35.463 に答える