PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Heroku - ActiveRecord::StatementInvalid (PG::Error:ERROR:la colonna richiesta non esiste

Le stringhe SQL standard utilizzano virgolette singole, le virgolette doppie sono per gli identificatori (come i nomi di tabelle e colonne); PostgreSQL segue lo standard qui, MySQL e SQLite sono meno rigidi, altri database fanno altre cose con quantità variabili di rigore. In ogni caso, le virgolette singole per le stringhe letterali SQL dovrebbero funzionare allo stesso modo ovunque.

Stai usando virgolette su una stringa SQL:

@holidays = Holiday.find(:all, :conditions => 'state = "requested"')
#------------------------------------------------------^---------^

Devi virgolette singole:

@holidays = Holiday.find(:all, :conditions => %q{state = 'requested'})

oppure modernizzalo e lascia che ActiveRecord si occupi della quotazione:

@holidays = Holiday.where(:state => 'requested')

Probabilmente dovrai correggere la quotazione anche per questo:

@holidays = Holiday.find(:all, :conditions => ["approver_id = #{current_user.id}", "state = requested"])

Ancora una volta, modernizzarlo è il modo più semplice:

@holidays = Holiday.where(:approver_id => current_user.id, :state => 'requested')

Immagino che tu stia sviluppando su SQLite ma distribuendo su PostgreSQL. È una cattiva idea, sviluppare e distribuire sempre sullo stesso stack.