ruby-on-rails - Rubocop 线长度太长,如何缩短给定线?
问题描述
Rubocop 告诉我我的线太长了。如何在不破坏代码的情况下修复这样的行上的格式?允许您使用下一行的规则是什么?
belongs_to :car, -> { includes(:listable).where(listings: {listable_type: Car.to_s}) }, foreign_key: :listable_id
和
raise ArgumentError, "Can only initiate inherited Classes of Base, not Base Directly" if self.class == Registration::Base
解决方案
有很多地方在 Ruby 中插入换行符是合法的。例如你的第一个片段:
belongs_to(
:car,
-> {
includes(
:listable
)
.where(
listings:
{
listable_type:
Car
.to_s
}
)
},
foreign_key:
:listable_id
)
你的第二个片段根本没有意义。一个对象总是知道它自己的类,一个对象永远没有理由检查它自己的类。这不仅仅是代码异味或反模式,这是一个巨大的危险信号,表明该代码的作者不了解面向对象和继承。
第二个片段应该使用Replace Conditional with Polymorphism Refactoring 进行重构。您没有显示足够的代码来查看确切的方式,但我会建议这样的事情:
class Registration::Base
def initialize
raise ArgumentError, 'Can only initiate inherited Classes of Base, not Base Directly'
end
end
推荐阅读
- python - ValueError:在 jwt 编码期间无法反序列化密钥数据
- here-api - 我们可以使用什么 API 来获取一组到达特定目的地的路线
- javascript - 在反应中将消息打印到组件
- docker - Windows 主机上 Linux 容器的卷
- elasticsearch - Elasticsearch 错误“顶部低于底角错误”
- android - 在 note 9 上启用热重新加载,以便与 expo 一起使用
- html - 单击按钮时显示元素
- eclipse - 跳转到eclipse中的定义不起作用
- angular7 - 如何解决Angular7中“由于表单未连接而取消表单提交”?
- oracle - 从 AWS DMS 连接到 Oracle DB 的问题