PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Heroku - ActiveRecord::StatementInvalid (PG::Error:FEHLER:angeforderte Spalte existiert nicht

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.