これはHere Document(HereDoc
)の構文で、Rubyの複数行の文字列です。例えば
、この:保存すべてのスペースや改行と
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
SQL
はあなたにその値が文字通りあるsql
文字列変数を与えます。ヒアドキュメントのドキュメントから
:
あなたが長い文字列や、あなたドンを持っているときに引用符の人気の用法がある開口部識別子
後にヒアドキュメントの場所でそれをメソッドを呼び出しますそれを1行に書きたいのでHereDocを使いますが、HereDocが保持するすべての改行文字と空白を保持したくない場合は、squish
(これはそれらを削除するためにRailsによって追加されたメソッドです)。たとえば、この:1つの空白に踏み付けすべての必然的な改行文字とスペースで
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.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
文字列変数を与えます。
スキッシュ、実装されている方法、およびハードコードされたテーブル名がクエリで使用されているのを見てください。私は最良の方法だとは思わないそれをするために。 –