Masalah Anda ada di sini:
WHERE "reviews"."trip_id" = 32
dan pesan kesalahan mengatakan bahwa:
jadi Anda telah membuat trip_id
kolom di reviews
sebagai string bukan sebagai bilangan bulat. Itu akan berfungsi dengan baik di SQLite karena sistem tipe SQLite agak longgar tetapi tidak akan berfungsi di PostgreSQL karena PostgreSQL sedikit lebih ketat.
Anda dapat mencoba menambahkan migrasi untuk memperbaiki jenis trip_id
:
def change
change_column :reviews, :trip_id, :integer
end
dan jika tidak berhasil, jatuhkan dan buat ulang tabel:
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
Anda juga dapat melakukan ALTER TABLE melalui SQL mentah jika Anda memiliki data yang ingin Anda pertahankan dan change_column
tidak berfungsi:
def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
Itu akan berfungsi di PostgreSQL (tetapi bukan SQLite) selama Anda tidak memiliki data yang rusak di trip_id
Anda .
Setelah Anda menyelesaikannya, Anda harus menginstal PostgreSQL dan mengalihkan lingkungan pengembangan Anda ke sana. Mengembangkan di atas SQLite dan menerapkan ke PostgreSQL (atau mengembangkan di atas satu database dan menerapkan di atas database lain dalam hal ini) adalah ide yang buruk dan akan menyebabkan Anda berbagai kesedihan dan kebingungan.