gpt4 book ai didi

ruby-on-rails - Rails 模块名称首字母缩写

转载 作者:行者123 更新时间:2023-12-04 07:29:24 26 4
gpt4 key购买 nike

看起来变形不适用于嵌套级别超过一层的模块名称。

如果您的 config/initializers/inflections.rb 中有以下内容:

ActiveSupport::Inflector.inflections do |inflect|
inflect.acronym 'VCloud'
end

然后当你在 app/ 下创建一个目录时,比如 app/services/vcloud/ 你会得到两个模块:

Vcloud #=> Vcloud
VCloud #=> VCloud

但是如果您创建一个嵌套级别更高的目录,例如app/services/vmware/vcloud/,您将只会得到一个模块:

Vmware::Vcloud #=> Vmware::Vcloud
Vmware::VCloud #=> NameError: uninitialized constant Vmware::VCloud

这是一个错误吗?

最佳答案

我认为这是一个错误。您可以使用(在初始化程序中)绕过它:

module ActiveSupport::Inflector
def underscore_with_acronym_fix(string)
words = string.split('::')
return words.map(&method(:underscore)).join('/') unless words.one?
underscore_without_acronym_fix(string)
end

alias_method_chain :underscore, :acronym_fix
end

我会提出一个拉取请求来解决这个问题,但是需要更多的时间来确认它不会破坏任何东西。这里有相当多的案例。

关于ruby-on-rails - Rails 模块名称首字母缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26485486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com