Teniendo en cuenta este código:¿Cómo puedo evitar la interpolación de cadenas de Ruby?
has_many :foos, :finder_sql = <<-SQL
select * from foos where bars = #{id}
SQL
La parte #{id}
se interpola prematuramente.
¿Cómo puedo escapar?
Teniendo en cuenta este código:¿Cómo puedo evitar la interpolación de cadenas de Ruby?
has_many :foos, :finder_sql = <<-SQL
select * from foos where bars = #{id}
SQL
La parte #{id}
se interpola prematuramente.
¿Cómo puedo escapar?
poner comillas simples alrededor del delimitador:
has_many :foos, :finder_sql = <<-'SQL'
select * from foos where bars = #{id}
SQL
Descrito aquí - http://www.cs.auckland.ac.nz/references/ruby/doc_bundle/Manual/man -1.4/syntax.html # here_doc – Gareth
sí porque rubí interpreta como un comentario – streetparade
@streetparade: No es cierto. HereDocs no tiene comentarios ... de hecho, todo su propósito es para que pueda ignorar el formateo. Sin embargo, actúan como cadenas de comillas dobles (por lo que se ejecuta # {code}). El método de mckeed le dice a ruby que trate el HereDoc como una cadena de una sola cita. –
ver también http://railsblaster.wordpress.com/2007/08/27/has_many-finder_sql/ –