Uw probleem is hier:
WHERE "reviews"."trip_id" = 32
en de foutmelding zegt dat:
dus je hebt je trip_id
. aangemaakt kolom in reviews
als een string in plaats van als een geheel getal. Dat werkt prima in SQLite omdat het typesysteem van SQLite nogal losjes is, maar het zal niet werken in PostgreSQL omdat PostgreSQL een stuk strenger is.
U kunt proberen een migratie toe te voegen om het type trip_id
te corrigeren :
def change
change_column :reviews, :trip_id, :integer
end
en als dat niet werkt, laat dan de tabel vallen en maak hem opnieuw:
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
U kunt ook een ALTER TABLE uitvoeren via onbewerkte SQL als u gegevens heeft die u wilt behouden en de change_column
werkt niet:
def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
Dat zou moeten werken in PostgreSQL (maar niet in SQLite) zolang je geen gebroken gegevens hebt in je trip_id
.
Als je dat eenmaal hebt geregeld, moet je PostgreSQL installeren en je ontwikkelomgeving daarop overschakelen. Ontwikkelen bovenop SQLite en implementeren naar PostgreSQL (of ontwikkelen bovenop één database en implementeren bovenop een andere database) is een slecht idee en zal u allerlei soorten verdriet en verwarring bezorgen.