如何解决Rubocop命令禁用Rails / SkipsModelValidations:避免使用update_all错误
我想通过以下行将记录中的一列更改为is_deleted: true
:
UserTag.where(cms_tag_id: webhook.dig('entity','id')).update_all(is_deleted: true)
但是我遇到了Rubocop的错误:
Rails/skipsmodelvalidations: avoid using update_all because it skips validations.
我知道我可以使用每个块并通过e.update在一个块中更新所有列,但是update_all
更快,只有一行,整洁。
如何仅针对此特定行禁用此类rubocop错误?
解决方法
您可以运行以下命令,这将生成一个.rubocop_todo.yml文件,该文件将记录并忽略违规文件的特定违法行为:
rubocop --auto-gen-config --exclude-limit 999 --no-offense-counts
--auto-gen-config
生成yml文件,这是实现您所要查找的唯一非可选标志。
--exclude-limit xxx
是在rubocop禁用整个应用程序的支票之前的多项罪行。
--no-offense-counts
不会记录yml文件中有多少次攻击。
确保您已经考虑过忽略棉绒的后果;通常建议不要遵循短绒棉布的建议。请注意,这将禁用对规格测试中所有违规行为的检查。
更新
如果要在不生成文件的情况下禁用rubocop检查,则可以使用如下注释:
Company.where(cms_tag_id: webhook.dig('entity','id')).update_all(is_deleted: true) # rubocop:disable Rails/SkipsModelValidations
,
扩展@benjessop的答案:
要有选择地为某个代码块禁用RuboCop,请使用WORK HRS
... # rubocop:disable
块,如下所示:
# rubocop:enable
另请参见:
的更多常规信息版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。