这是一个Ruby语言中的多行字符串语法,被称为Here Document(这里文档,HereDoc)。
例如:
sql = <<-SQL
UPDATE #{klass.constantize.table_name}
SET uuid = uuid_generate_v4(), updated_at = now()
WHERE id IN (#{group.map(&:id).join(',')})
AND uuid IS NULL
SQL
将为您提供一个名为sql
的字符串变量,其值字面上为:
UPDATE #{klass.constantize.table_name}
SET uuid = uuid_generate_v4(), updated_at = now()
WHERE id IN (#{group.map(&:id).join(',')})
AND uuid IS NULL
保留所有空格和换行符。
来自HereDoc文档:
要在HereDoc上调用方法,请将其放置在开头标识符之后
这个引用的一个常见用法是当你有一个很长的字符串,你不想把它写在一行上,因此使用HereDoc,但你仍然不想保留HereDoc保存的所有换行符和空格,这种情况下,你可以只需调用squish
(这是Rails添加的方法)来删除它们。例如:
sql = <<-SQL.squish
UPDATE #{klass.constantize.table_name}
SET uuid = uuid_generate_v4(), updated_at = now()
WHERE id IN (#{group.map(&:id).join(',')})
AND uuid IS NULL
SQL
将会给你一个sql
字符串变量,其值字面上为:
UPDATE #{klass.constantize.table_name} SET uuid = uuid_generate_v4(), updated_at = now() WHERE id IN (#{group.map(&:id).join(',')}) AND uuid IS NULL
将所有换行符和空格压缩成一个空格。