Tu problema está aquí:
WHERE "reviews"."trip_id" = 32
y el mensaje de error dice que:
por lo que ha creado su trip_id
columna en reviews
como una cadena en lugar de como un entero. Eso funcionará bien en SQLite porque el sistema de tipos de SQLite es bastante flexible, pero no funcionará en PostgreSQL, ya que PostgreSQL es un poco más estricto.
Podría intentar agregar una migración para corregir el tipo de trip_id
:
def change
change_column :reviews, :trip_id, :integer
end
y si eso no funciona, suelte y vuelva a crear la tabla:
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
También puede hacer ALTER TABLE a través de SQL sin formato si tiene datos que desea conservar y el change_column
no funciona:
def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
Eso debería funcionar en PostgreSQL (pero no en SQLite) siempre que no tenga datos rotos en su trip_id
.
Una vez que haya resuelto eso, debe instalar PostgreSQL y cambiar su entorno de desarrollo a eso. Desarrollar sobre SQLite e implementar en PostgreSQL (o desarrollar sobre una base de datos e implementar sobre cualquier otra base de datos) es una mala idea y le causará todo tipo de molestias y confusión.