Я создал миграцию с созданием пользовательской функции postgres:
class CreatePopularityPgFunctions < ActiveRecord::Migration[5.2]
def up
execute %{
CREATE OR REPLACE FUNCTION popularity(count integer, weight integer default 3) RETURNS integer AS $$
SELECT count * weight
$$ LANGUAGE SQL IMMUTABLE;
}
end
def down
execute 'drop function popularity(integer, integer) cascade'
end
end
и запуск rake db:migrate
правильно добавляет ее в схему.Однако запуск rake db:reset
, по-видимому, по какой-то причине не создает эту функцию в PG.Функция отсутствует в схеме, и попытка использовать ее в запросе SQL приводит к ошибке об отсутствующей функции.