ruby-on-rails - 代码优化/更好的方式来操作类名
问题描述
我有这个代码很长时间了,我想知道是否有一个简短或更好的方法来做到这一点。我们有匹配的服务和工人,这段代码找到了一些工人的匹配服务。
def FooWorker
def service_klass
self.class.name
.then(&:underscore)
.then { |name| name.split('_') }
.then { |name| name[0...-1] << :service }
.then { |name| name.join('_') }
.classify
.safe_constantize
end
end
FooWorker.service_klass # -> FooService
解决方案
你为什么不直接用Worker
替换Service
?
def service_klass
self.class.name.sub(/Worker\z/, 'Service').safe_constantize
end
推荐阅读
- c - C 编程:为什么 (0 || -1) == 1?
- selenium - /usr/local/bin/chromedriver:无法执行二进制文件:在尝试将 ChromeDriver 与 Selenium 一起使用以在 Raspberry Pi 4 上工作时执行格式错误?
- javascript - 组件中的 v-data-table:如何默认选择所有项目?
- javascript - 放大谷歌图表后如何停止默认字体大小
- r - 使用来自不同列的多年创建一张闪亮的传单地图
- akka - akka-typed & cluster sharding 支持哪些持久化插件
- c# - 如何为 ClientContext 正确删除 SitePages/Home.aspx 或 Forms/AllItems.aspx?
- android - minSdk 兼容性错误设置 react-native-notifications@2.1.3 与 react-native 0.60.0
- javascript - 更改文本字体的颜色
- date - 使用过滤单元格上方的单元格按月分组