Dies ist eine Syntax für eine Here Document (HereDoc
), die ein mehrzeiliges Zeichenfolge in Ruby ist.
Zum Beispiel diese:
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
geben Ihnen einen sql
String-Variable, deren Wert wörtlich:
UPDATE #{klass.constantize.table_name}
SET uuid = uuid_generate_v4(), updated_at = now()
WHERE id IN (#{group.map(&:id).join(',')})
AND uuid IS NULL
mit allen Räumen und Zeilenumbrüche erhalten.
Aus dem heredoc docs:
Um es nach der Eröffnung Kennung
Eine beliebte Verwendung dieses Zitat eine Methode für einen heredoc Ort zu nennen, ist, wenn Sie eine lange Zeichenfolge haben, und Sie don Ich möchte es nicht in einer einzigen Zeile schreiben und daher ein HereDoc dafür verwenden, aber Sie möchten immer noch nicht alle Zeilenfolgen und Leerstellen beibehalten, die das HereDoc beibehält. In diesem Fall können Sie einfach squish
anrufen (was ist eine Methode, die von Rails hinzugefügt wurde, um sie zu entfernen. Zum Beispiel diese:
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
geben Ihnen einen sql
String-Variable, deren Wert wörtlich:
UPDATE #{klass.constantize.table_name} SET uuid = uuid_generate_v4(), updated_at = now() WHERE id IN (#{group.map(&:id).join(',')}) AND uuid IS NULL
mit allen daraus folgenden Zeilenumbrüche und Leerzeichen in ein Leerzeichen zerquetscht.
Siehe [this] (http://apidock.com/rails/String/squish) für Squish, über die Art und Weise, die implementiert wird, und die hardcodiert Tabellenname in der Abfrage verwendet, glaube ich nicht, ist der beste Weg es zu tun. –