Twój problem jest tutaj:
WHERE "reviews"."trip_id" = 32
a komunikat o błędzie mówi, że:
więc utworzyłeś swój trip_id
kolumna w reviews
jako ciąg, a nie jako liczbę całkowitą. Będzie to działać dobrze w SQLite, ponieważ system typów SQLite jest raczej luźny, ale nie zadziała w PostgreSQL, ponieważ PostgreSQL jest nieco bardziej rygorystyczny.
Możesz spróbować dodać migrację, aby naprawić typ trip_id
:
def change
change_column :reviews, :trip_id, :integer
end
a jeśli to nie zadziała, upuść i utwórz ponownie tabelę:
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
Możesz również wykonać ALTER TABLE za pomocą surowego SQL, jeśli masz dane, które chcesz zachować i change_column
nie działa:
def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
To powinno działać w PostgreSQL (ale nie w SQLite), o ile nie masz żadnych uszkodzonych danych w swoim trip_id
.
Kiedy już to wyjaśnisz, powinieneś zainstalować PostgreSQL i przełączyć na to środowisko programistyczne. Rozwijanie na bazie SQLite i wdrażanie do PostgreSQL (lub rozwijanie na jednej bazie danych i wdrażanie na dowolnej innej bazie danych) jest złym pomysłem i spowoduje różnego rodzaju smutek i zamieszanie.