2014-05-21 45 views
0

當我嘗試這個文件運行遷移:在Rails的Execute方法4.1.1遷移工作不

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,2.1.1紅寶石,Postgres的9.3

+0

在'execute'行的開頭是否有任何不可打印/控制字符?在運行'execute'前,似乎有4個字符,並且在錯誤中的引號內:''execute'' –

+1

謝謝Graeme。那爲我做了。不知道他們是怎麼進去的,尤其是因爲我使用的VIM通常顯示怪異的字符。隨意提交作爲答案,所以你可以得到你當之無愧的點:) – Neal

回答

1

有字execute前4個不可打印的字符 - 它同時顯示,當它在遷移過程中,並在內部錯誤的報價相呼應的語句: ' execute'

所以它實際上是在尋找一種叫做....execute的方法,其中....是那些字符。