Váš problém je zde:
WHERE "reviews"."trip_id" = 32
a chybová zpráva říká:
takže jste vytvořili své trip_id
ve sloupci reviews
jako řetězec spíše než jako celé číslo. To bude fungovat dobře v SQLite, protože typový systém SQLite je dost volný, ale nebude fungovat v PostgreSQL, protože PostgreSQL je o něco přísnější.
Můžete zkusit přidat migraci a opravit typ trip_id
:
def change
change_column :reviews, :trip_id, :integer
end
a pokud to nefunguje, stáhněte a znovu vytvořte tabulku:
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
Můžete také provést ALTER TABLE prostřednictvím nezpracovaného SQL, pokud máte data, která chcete zachovat, a change_column
nefunguje:
def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
To by mělo fungovat v PostgreSQL (ale ne SQLite), pokud ve svém trip_id
nemáte žádná nefunkční data .
Jakmile to budete mít vyřešené, měli byste nainstalovat PostgreSQL a přepnout na něj své vývojové prostředí. Vyvíjet nad SQLite a nasazovat do PostgreSQL (nebo vyvíjet nad jednou databází a nasazovat na jakoukoli jinou databázi) je špatný nápad a způsobí vám nejrůznější zármutek a zmatek.