Seperti disebutkan dalam komentar, sebagian besar database menggunakan tanda kutip tunggal untuk literal string dan tanda kutip ganda untuk pengidentifikasi. MySQL agak longgar dan juga akan menerima tanda kutip ganda untuk literal string tetapi PostgreSQL (untungnya) cukup ketat. Jadi, Anda ingin menggunakan tanda kutip tunggal:
SnCl.all(:conditions => "col3 = 'xx'")
atau menggunakan where
:
SnCl.where("col3 = 'xx'")
atau dengan penggunaan fasilitas kuotasi driver database yang masuk akal:
SnCl.where("col3 = #{SnCol.connection.quote('xx')}")
Dan menyimpan yang terbaik untuk yang terakhir, cara orang yang bijaksana melakukannya menggunakan placeholder atau argumen Hash ke where
:
SnCl.where('col3 = ?', 'xx')
SnCl.where('col3 = :col3', :col3 => 'xx')
SnCl.where(:col3 => 'xx')
Yang terakhir akan menjadi yang paling idiomatis untuk Rails dan dua di atas akan berguna untuk kondisi yang lebih kompleks di mana rantai terlalu rumit atau tidak berfungsi (seperti ketika Anda membutuhkan OR di klausa WHERE Anda).