2015-04-03 32 views
1

所以前段时间我正在处理触发器,并为我的表添加了几个插入和更新事件,因此他们去了我的schema.rb,但后来我发现了一种不使用触发器的方法并删除它们从dabatase控制台,但他们的SQL代码显然还没有从架构文件中删除,所以现在我有它类似的东西:从Rails模式文件中删除SQL代码

execute(<<-TRIGGERSQL) 
CREATE OR REPLACE FUNCTION public.arguments_vector_update() 
RETURNS trigger 
LANGUAGE plpgsql 
AS $function$ 
BEGIN 
    IF TG_OP = 'INSERT' THEN 
     new.tsv_body = to_tsvector('pg_catalog.simple', COALESCE(NEW.text, '')); 
    END IF; 
    IF TG_OP = 'UPDATE' THEN 
     IF NEW.text <> OLD.text THEN 
      new.tsv_body = to_tsvector('pg_catalog.simple', COALESCE(NEW.text, '')); 
     END IF; 
    END IF; 
    RETURN NEW; 
END 
$function$ 
    TRIGGERSQL 

,我想我已经删除了迁移文件太-_-

我可能会添加一个新的迁移代码来删除trigers,但它会使模式文件更混乱,所以我想知道是否还有另一种方法可以从模式文件中删除此代码?

我正在使用PSQL,如果它很重要。

+0

这个命令的一切都很完美,只是我不知道它哈哈非常感谢。您可以将它作为答案发布,我会接受它 – JustMichael 2015-04-03 07:28:30

回答

1

在Rails应用程序rake -T将有这样一段话:

rake db:schema:dump # Create a db/schema.rb file that is portable against any DB supported by AR 

所以,你可以rake db:schema:dump生成一个新文件db/schema.rb你需要一个任何时候。