Staging/Production 中未显示触发程序

Trigger Procedure Not Showing Up In Staging/Production

所以我的 structure.sql:

中有这个触发程序
CREATE FUNCTION dead_filter() RETURNS TRIGGER AS $dead_filter$
    BEGIN
        IF (NEW.all_votes > 6 AND NEW.non_skip_votes/NEW.all_votes::float < 0.56) THEN
            NEW.dead := true;
            RETURN NEW;
        END IF;

    RETURN NEW;
END;
$dead_filter$ LANGUAGE plpgsql;

CREATE TRIGGER dead_filter AFTER UPDATE ON statements 
FOR EACH ROW 
EXECUTE PROCEDURE dead_filter();

它在本地工作得很好,但出于某种原因它出现在我的暂存和生产服务器中!

两者都在 heroku 应用程序上运行,并且都有

config.active_record.schema_format = :sql

在他们的相关配置文件中。我在这里错过了什么?

select * from pg_trigger;

不包括我在 staging/production 上的触发器,但在本地,在开发中。

我是否需要 运行 重新读取 structure.sql 文件?后端绝对是我的弱点,所以如果有一些非常明显的事情我应该知道去做......很可能我不知道去做!

谢谢!

如评论所述,您需要创建一个添加触发器的迁移,并且 运行 此迁移在生产环境中运行,因为它在 Heroku 上不是自动的。另请注意,structure.sql 文件将在 运行 本地迁移或 rake db:schema:dump 等任务后重新生成。所以你不应该手动编辑这个文件。