schema.rb 中的双引号字符串

Double quoted strings in schema.rb

这可能是一个有点琐碎的问题,但一直困扰着我:

Rails 在 schema.rb 中使用双引号字符串而不是单引号字符串(如 rubocop 建议的那样)是否有任何特定原因?

schema.rb 使用双引号的原因是大部分格式设置是通过对许多预定义字符串调用 #inspect 完成的,例如:

# schema_dumper.rb:91
stream.puts "  enable_extension #{extension.inspect}"

String#inspect 打印带有双引号的字符串,即:

"foo".inspect
#=> "\"foo\""

也就是说,RuboCop 是用来捕捉人为错误的,所以不需要包含框架生成的文件,这些文件不应该手动编辑。 (您仍然希望检查使用 Rails 生成器创建的应用程序文件。)

您可能会发现通过将模式文件添加到 .rubocop.yml 文件来从 Rubocop 的检查中排除它很有用:

AllCops:
  Exclude:
    - db/schema.rb