Standaard SQL-strings gebruiken enkele aanhalingstekens, dubbele aanhalingstekens zijn voor identifiers (zoals tabel- en kolomnamen); PostgreSQL volgt hier de standaard, MySQL en SQLite zijn minder streng, andere databases doen andere dingen met wisselende mate van striktheid. In ieder geval zouden enkele aanhalingstekens voor letterlijke SQL-tekenreeksen overal hetzelfde moeten werken.
Je gebruikt dubbele aanhalingstekens in een SQL-string:
@holidays = Holiday.find(:all, :conditions => 'state = "requested"')
#------------------------------------------------------^---------^
U moet enkele aanhalingstekens gebruiken:
@holidays = Holiday.find(:all, :conditions => %q{state = 'requested'})
of moderniseer het en laat ActiveRecord het citaat afhandelen:
@holidays = Holiday.where(:state => 'requested')
Je zult waarschijnlijk ook de aanhalingstekens voor deze moeten corrigeren:
@holidays = Holiday.find(:all, :conditions => ["approver_id = #{current_user.id}", "state = requested"])
Nogmaals, moderniseren is de gemakkelijkste manier:
@holidays = Holiday.where(:approver_id => current_user.id, :state => 'requested')
Ik vermoed dat u zich ontwikkelt op SQLite maar implementeert op PostgreSQL. Dat is een slecht idee, ontwikkel en implementeer altijd op dezelfde stack.