当我尝试为此文件运行迁移时:
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
答案 0 :(得分:1)
在单词execute
之前有4个不可打印的字符 - 它表示在迁移期间回显语句的时间以及错误中的引号:' execute'
。
所以它实际上正在寻找一种名为....execute
的方法,其中....
就是那些字符。