PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Heroku - ActiveRecord::StatementInvalid (PG::Error:ERROR:a coluna solicitada não existe


Strings SQL padrão usam aspas simples, aspas duplas são para identificadores (como nomes de tabelas e colunas); PostgreSQL segue o padrão aqui, MySQL e SQLite são menos rígidos, outros bancos de dados fazem outras coisas com graus variados de rigor. De qualquer forma, aspas simples para literais de string SQL devem funcionar da mesma forma em todos os lugares.

Você está usando aspas duplas em uma string SQL:
@holidays = Holiday.find(:all, :conditions => 'state = "requested"')
#------------------------------------------------------^---------^

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

ou modernizá-lo e deixar o ActiveRecord lidar com a citação:
@holidays = Holiday.where(:state => 'requested')

Você provavelmente precisará corrigir a cotação para este também:
@holidays = Holiday.find(:all, :conditions => ["approver_id = #{current_user.id}", "state = requested"])

Novamente, modernizá-lo é a maneira mais fácil:
@holidays = Holiday.where(:approver_id => current_user.id, :state => 'requested')

Eu estou supondo que você está desenvolvendo no SQLite, mas implantando no PostgreSQL. Essa é uma má ideia, sempre desenvolver e implantar na mesma pilha.