Votre problème est ici :
WHERE "reviews"."trip_id" = 32
et le message d'erreur indique que :
vous avez donc créé votre trip_id
colonne dans reviews
sous forme de chaîne plutôt que sous forme d'entier. Cela fonctionnera bien dans SQLite car le système de type de SQLite est plutôt lâche, mais cela ne fonctionnera pas dans PostgreSQL car PostgreSQL est un peu plus strict.
Vous pouvez essayer d'ajouter une migration pour corriger le type de trip_id
:
def change
change_column :reviews, :trip_id, :integer
end
et si cela ne fonctionne pas, supprimez et recréez la table :
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
Vous pouvez également faire un ALTER TABLE via SQL brut si vous avez des données que vous souhaitez conserver et le change_column
ne fonctionne pas :
def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
Cela devrait fonctionner dans PostgreSQL (mais pas SQLite) tant que vous n'avez pas de données cassées dans votre trip_id
.
Une fois que vous avez réglé cela, vous devez installer PostgreSQL et basculer votre environnement de développement vers celui-ci. Développer au-dessus de SQLite et déployer sur PostgreSQL (ou développer au-dessus d'une base de données et déployer au-dessus de n'importe quelle autre base de données d'ailleurs) est une mauvaise idée et vous causera toutes sortes de chagrin et de confusion.