所以我在我的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;
不包括我在暂存/生产中的触发器,但在开发时本地就是DOES。
我需要运行什么来重新读取structure.sql文件吗?后端绝对是我的弱点,所以如果有一些超级显而易见的东西我应该知道的事情......我不知道该怎么做!
谢谢!
答案 0 :(得分:1)
在评论中,您需要创建一个迁移,添加触发器并在生产中运行此迁移,因为它在Heroku上不是自动的。另请注意,在本地运行迁移或structure.sql
之类的任务后,将重新生成rake db:schema:dump
文件。所以你不应该手动编辑这个文件。