Ditt problem är här:
WHERE "reviews"."trip_id" = 32
och felmeddelandet säger att:
så du har skapat ditt trip_id
kolumnen i reviews
som en sträng snarare än som ett heltal. Det kommer att fungera bra i SQLite eftersom SQLites typsystem är ganska löst men det kommer inte att fungera i PostgreSQL eftersom PostgreSQL är ganska strängare.
Du kan försöka lägga till en migrering för att fixa typen av trip_id
:
def change
change_column :reviews, :trip_id, :integer
end
och om det inte fungerar släpp och återskapa tabellen:
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
Du kan också göra en ALTER TABLE genom rå SQL om du har data som du vill bevara och change_column
fungerar inte:
def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
Det borde fungera i PostgreSQL (men inte SQLite) så länge du inte har några trasiga data i ditt trip_id
.
När du har löst det, bör du installera PostgreSQL och byta din utvecklingsmiljö till det. Att utveckla ovanpå SQLite och distribuera till PostgreSQL (eller utveckla ovanpå en databas och distribuera ovanpå vilken annan databas för den delen) är en dålig idé och kommer att orsaka dig all slags sorg och förvirring.