2015-04-03 59 views
0

我们试图重新命名DB到的列导轨约定: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 2015-04-03 20:01:20

+0

提供了整个迁移命名为20150401225004_make_railsy,所以我们可以在第19行很多错误是(读取错误消息) – cristian 2015-04-03 20:22:42

+0

@kwarrick,你是正确的,但即使当我解决这个问题,它会抛出同样的错误。 – kjprice 2015-04-03 21:00:18

回答

0

看来在那个循环中复制并粘贴了en space

快速搜索和替换:

:%s/ / /g 
相关问题