Standard-SQL-Strings verwenden einfache Anführungszeichen, doppelte Anführungszeichen sind für Bezeichner (wie Tabellen- und Spaltennamen); PostgreSQL folgt hier dem Standard, MySQL und SQLite sind weniger streng, andere Datenbanken machen andere Dinge mit unterschiedlicher Strenge. In jedem Fall sollten einfache Anführungszeichen für SQL-String-Literale überall gleich funktionieren.
Sie verwenden doppelte Anführungszeichen für eine SQL-Zeichenfolge:
@holidays = Holiday.find(:all, :conditions => 'state = "requested"')
#------------------------------------------------------^---------^
Sie müssen einfache Anführungszeichen:
@holidays = Holiday.find(:all, :conditions => %q{state = 'requested'})
oder modernisieren Sie es und überlassen Sie das Zitieren ActiveRecord:
@holidays = Holiday.where(:state => 'requested')
Wahrscheinlich müssen Sie auch hier die Anführungszeichen korrigieren:
@holidays = Holiday.find(:all, :conditions => ["approver_id = #{current_user.id}", "state = requested"])
Auch hier ist die Modernisierung der einfachste Weg:
@holidays = Holiday.where(:approver_id => current_user.id, :state => 'requested')
Ich vermute, dass Sie auf SQLite entwickeln, aber auf PostgreSQL bereitstellen. Das ist eine schlechte Idee, entwickeln und implementieren Sie immer auf demselben Stack.