Seu problema está aqui:
WHERE "reviews"."trip_id" = 32
e a mensagem de erro diz que:
então você criou seu
trip_id
coluna em reviews
como uma string em vez de um inteiro. Isso funcionará bem no SQLite porque o sistema de tipos do SQLite é bastante solto, mas não funcionará no PostgreSQL, pois o PostgreSQL é um pouco mais rigoroso. Você pode tentar adicionar uma migração para corrigir o tipo de
trip_id
:def change
change_column :reviews, :trip_id, :integer
end
e se isso não funcionar, solte e recrie a tabela:
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
Você também pode fazer um ALTER TABLE por meio de SQL bruto se tiver dados que deseja preservar e o
change_column
não funciona:def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
Isso deve funcionar no PostgreSQL (mas não no SQLite), desde que você não tenha dados quebrados em seu
trip_id
. Depois de resolver isso, você deve instalar o PostgreSQL e mudar seu ambiente de desenvolvimento para ele. Desenvolver em cima do SQLite e implantar no PostgreSQL (ou desenvolver em cima de um banco de dados e implantar em cima de qualquer outro banco de dados) é uma má ideia e causará todo tipo de dor e confusão.