Rails 4.1.1迁移中的执行方法不起作用

时间:2014-05-21 19:53:38

标签: ruby-on-rails ruby postgresql ruby-on-rails-4

当我尝试为此文件运行迁移时:

class AddIndexToUsernameDowncaseForUsers < ActiveRecord::Migration
  def up
    execute 'CREATE INDEX index_users_on_username_downcase ON users (lower(username));'
  end

  def down
    remove_index :users, name: :index_users_on_username_downcase
  end
end

我收到此错误:

== 20140521043803 AddIndexToUsernameDowncaseForUsers: migrating ===============
--     execute("CREATE INDEX index_users_on_username_downcase ON groups lower(username);")
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

undefined method `    execute' for #<AddIndexToUsernameDowncaseForUsers:0x007fea8a9b9c50>/Users/mydir/db/migrate/20140521043803_add_index_to_username_downcase_for_users.rb:3:in `up'
NoMethodError: undefined method `    execute' for #<AddIndexToUsernameDowncaseForUsers:0x007fea8a9b9c50>
/Users/mydir/db/migrate/20140521043803_add_index_to_username_downcase_for_users.rb:3:in `up'

我真的很困惑,因为我之前从未遇到过迁移问题。看起来帮助者没有被包括在内或其他什么东西。非常难过,但我的猜测是这是一个由我来处理的问题。

Rails 4.1.1,Ruby 2.1.1,Postgres 9.3

1 个答案:

答案 0 :(得分:1)

在单词execute之前有4个不可打印的字符 - 它表示在迁移期间回显语句的时间以及错误中的引号:' execute'

所以它实际上正在寻找一种名为....execute的方法,其中....就是那些字符。