Rails迁移中的Heredoc语法

时间:2015-12-15 05:32:34

标签: ruby-on-rails ruby

我正在尝试在迁移中设置触发器并具有以下内容:

class AddUpdateTrigger < ActiveRecord::Migration
  def change

    execute <<-SQL
        CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE
        ON queryables  FOR EACH ROW EXECUTE PROCEDURE
        tsvector_update_trigger(
          search_data, 'pg_catalog.english', val
        );
     SQL  


  end
end

当我运行rake db:migrate时,我收到以下错误:

    rake aborted!
    SyntaxError: /Users/jt/repos/blue/db/migrate/20151215052427_add_update_trigger.rb:15:
    can't find string "SQL" anywhere before EOF

但我不确定为什么。我究竟做错了什么?

1 个答案:

答案 0 :(得分:4)

在预定的结束"SQL"之后,您有额外的空格字符。它实际上是"SQL ",因此它与开头"SQL"不匹配。