String SQL standar menggunakan tanda kutip tunggal, tanda kutip ganda untuk pengidentifikasi (seperti nama tabel dan kolom); PostgreSQL mengikuti standar di sini, MySQL dan SQLite kurang ketat, database lain melakukan hal lain dengan jumlah keketatan yang bervariasi. Bagaimanapun, tanda kutip tunggal untuk literal string SQL harus bekerja sama di mana saja.
Anda menggunakan tanda kutip ganda pada string SQL:
@holidays = Holiday.find(:all, :conditions => 'state = "requested"')
#------------------------------------------------------^---------^
Anda harus tanda kutip tunggal:
@holidays = Holiday.find(:all, :conditions => %q{state = 'requested'})
atau memodernkannya dan biarkan ActiveRecord menangani kutipan:
@holidays = Holiday.where(:state => 'requested')
Anda mungkin perlu memperbaiki kutipan untuk yang ini juga:
@holidays = Holiday.find(:all, :conditions => ["approver_id = #{current_user.id}", "state = requested"])
Sekali lagi, memodernisasinya adalah cara termudah:
@holidays = Holiday.where(:approver_id => current_user.id, :state => 'requested')
Saya menduga Anda mengembangkan di SQLite tetapi menggunakan PostgreSQL. Itu ide yang buruk, selalu kembangkan dan terapkan pada tumpukan yang sama.