我在Ruby-on-Rails中有一个版本化的API。不同的控制器和服务的作用域如下:
class Api::V1::Navigation < Api::Navigation
但是我的代码的某些部分需要调用某些服务的每个版本。我怎么能迭代它们呢?
我试过这个:
defined? eval('Api::V1')::Navigation
问题是即使有一个不存在的版本,它仍然有效:
defined? eval('Api::V24')::Navigation
=> "method"
我怎么知道版本是否存在?
答案 0 :(得分:1)
您可以使用constants
:
module API
module V1
class Navigation
end
end
module V2
class Navigation
end
end
end
API.constants
# => [:V1, :V2]
API.constants.include?(:V1)
# => true
API.constants.include?(:V24)
# => false
答案 1 :(得分:1)
此代码可以提供帮助。如果您使用const_defined?
方法。
module API
end
module API::V1
class Navigator
end
end
module API::V2
class Navigator
end
end
API.const_defined?(:V1)
# => true
API.const_defined?(:V5)
# => false