Comme mentionné dans les commentaires, la plupart des bases de données utilisent des guillemets simples pour les littéraux de chaîne et des guillemets doubles pour les identificateurs. MySQL est plutôt laxiste et accepte également les guillemets doubles pour les chaînes littérales, mais PostgreSQL est (heureusement) assez strict. Vous souhaitez donc utiliser des guillemets simples :
SnCl.all(:conditions => "col3 = 'xx'")
ou en utilisant where
:
SnCl.where("col3 = 'xx'")
ou avec une utilisation judicieuse des fonctions de citation du pilote de base de données :
SnCl.where("col3 = #{SnCol.connection.quote('xx')}")
Et garder le meilleur pour la fin, comme les gens sensés le font en utilisant un espace réservé ou des arguments de hachage pour where
:
SnCl.where('col3 = ?', 'xx')
SnCl.where('col3 = :col3', :col3 => 'xx')
SnCl.where(:col3 => 'xx')
Le dernier serait le plus idiomatique pour Rails et les deux ci-dessus seraient utiles pour des conditions plus complexes où le chaînage est trop lourd ou ne fonctionne pas (comme lorsque vous avez besoin d'un OR dans votre clause WHERE).