2015-04-03 4 views
0

Мы пытаемся переименовать столбцы БД к рельсам конвенции:Rails миграции - не определен метод ` '

class MakeRailsy < ActiveRecord::Migration 
    def change 
    # Classes 
    rename_table :Classes, :classes_ 
    rename_table :classes_, :classes 
    rename_column :classes, :ClassID, :id 
    rename_column :classes, :ClassNO, :class_no 
    rename_column :classes, :SE,  :se 
    rename_column :classes, :EE,  :ee 
    rename_column :classes, :CE,  :ce 
    rename_column :classes, :MBA,  :mba 
    rename_column :classes, :CS,  :cs 
    rename_column :classes, :AM,  :am 
    rename_column :classes, :ESL,  :esl 
    rename_column :classes, :U_G,  :u_g 

    %w(ClassName DepartmentID SectionNumber InstructorID Units Location 
     DaysAndTimes Notes Description).each do |column| 
     rename_column :classes, column, column.underscore 
    end 

Но это выдает ошибку:

-- rename_column(:classes, "ClassName", "class_name") 
    -> 0.0089s 
--  ([]) 
rake aborted! 
StandardError: An error has occurred, all later migrations canceled: 
undefined method ` ' for #<MakeRailsy:0x007ffa718e1160>/Users/kellyprice/git/transcript_archives/db/migrate/20150401225004_make_railsy.rb:19:in `block in change'  
/Users/kellyprice/git/transcript_archives/db/migrate/20150401225004_make_railsy.rb:18:in `each' 
/Users/kellyprice/git/transcript_archives/db/migrate/20150401225004_make_railsy.rb:18:in `change' 
NoMethodError: undefined method ` ' for #<MakeRailsy:0x007ffa718e1160> 
/Users/kellyprice/git/transcript_archives/db/migrate/20150401225004_make_railsy.rb:19:in `block in change' 
/Users/kellyprice/git/transcript_archives/db/migrate/2015040122500 

Чтобы попытаться и исключить сферу ошибки/синтаксис Я попытался, но безрезультатно:

self.rename_column(:classes, column, column.underscore) 

и, если вы расплющить петлю и вызвать rename_column вручную, кажется, работать.

+0

Я считаю, что есть опечатка в 'SectionNumber'. Теперь он читает «SectionMumber» с номером M. – kwarrick

+0

, который содержит всю миграцию с именем 20150401225004_make_railsy, ​​поэтому мы можем взять много в строке 19, где ошибка (прочитайте сообщение об ошибке) – cristian

+0

@kwarrick, вы правы, но даже когда Я исправляю это, он вызывает ту же ошибку. – kjprice

ответ

2

У вас есть unicode-пространство в вашем файле, которое Ruby решил - вызов метода. Это один из них: http://www.fileformat.info/info/unicode/char/2002/index.htm

Если вы скопировали пробел из сообщения об ошибке и замените поиск на обычное пространство, я думаю, он должен его исправить.

0

Похоже, что в этом цикле есть копия и вставка en space.

Быстрый поиск и замена:

:%s/ / /g 
Смежные вопросы