Como se menciona en los comentarios, la mayoría de las bases de datos usan comillas simples para cadenas literales y comillas dobles para identificadores. MySQL es bastante laxo y también aceptará comillas dobles para cadenas literales, pero PostgreSQL es (afortunadamente) bastante estricto. Entonces quieres usar comillas simples:
SnCl.all(:conditions => "col3 = 'xx'")
o usando where
:
SnCl.where("col3 = 'xx'")
o con un uso sensato de las funciones de cotización del controlador de la base de datos:
SnCl.where("col3 = #{SnCol.connection.quote('xx')}")
Y guardando lo mejor para el final, de la forma en que la gente sensata lo hace usando un marcador de posición o argumentos Hash para where
:
SnCl.where('col3 = ?', 'xx')
SnCl.where('col3 = :col3', :col3 => 'xx')
SnCl.where(:col3 => 'xx')
El último sería el más idiomático para Rails y los dos anteriores serían útiles para condiciones más complejas donde el encadenamiento es demasiado engorroso o no funciona (como cuando necesita un OR en su cláusula WHERE).