Ваша проблема здесь:
WHERE "reviews"."trip_id" = 32
и сообщение об ошибке гласит:
оператор не существует: символ меняется = целое число
, поэтому вы создали столбец trip_id
в reviews
как строку, а не как целое число. Это будет хорошо работать в SQLite, потому что система типов SQLite довольно свободна, но не будет работать в PostgreSQL, так как PostgreSQL немного строже.
Вы можете попробовать добавить миграцию, чтобы исправить тип trip_id
:
def change
change_column :reviews, :trip_id, :integer
end
и, если это не сработает, удалите и заново создайте таблицу:
def change
drop_table :reviews
create_table :reviews do |t|
#...
t.integer :trip_id
#...
end
end
Вы также можете выполнить ALTER TABLE через сырой SQL, если у вас есть данные, которые вы хотите сохранить, и change_column
не работает:
def change
execute %q{
alter table reviews
alter column trip_id
type int using cast(trip_id as int)
}
end
Это должно работать в PostgreSQL (но не в SQLite), если в вашем trip_id
.
нет поврежденных данных.
Как только вы разобрались, вы должны установить PostgreSQL и переключить вашу среду разработки на это. Разработка поверх SQLite и развертывание на PostgreSQL (или разработка поверх одной базы данных и развертывание поверх любой другой базы данных в этом отношении) - плохая идея, которая вызовет у вас всевозможные горе и растерянность.