问题描述
我想通过以下行将记录中的一列更改为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
另请参见:
的更多常规信息