2015-04-22 25 views
2

我移植一個應用程序到軌和一對夫婦的列被命名爲東西像爲列在名稱中的數字

2nd_phone 2nd_address

,當我嘗試做使用 遷移創建遷移t.string:2nd_phone

我得到的語法錯誤,意想不到的tINTEGER,期待tSTRING_CONTENT或tSTRING_DBEG或tSTRING_DVAR或tSTRING_END

任何想法如何做到這一點的RALS?

回答

1

在遷移文件中有這樣加上引號,可支持起始字符爲數字之一,然後運行rake db:migrate

t.string :'2nd_phone' 

,而這樣做的方式,如果你想創建你需要有這樣的新紀錄:

Model.create(:'2nd_phone'=> 'your value') 
0

您看到的錯誤是因爲ruby不喜歡符號:2nd_phone,因爲ruby不支持以數字開頭的符號。如果你試圖完全按照原樣使用數據庫模式,我認爲這將是你遇到的許多問題中的第一個。

您可以用t.string "2nd_phone"聲明該列,這意味着遷移將運行。但是,如果rails(activerecord)提供的屬性無法使用getter和setter,那麼您仍然會遇到問題。即你將無法再做my_thing.2nd_phone,因爲ruby不支持以數字開頭的方法名稱。

您可能(可能)使用屬性散列(my_thing["2nd_phone"])訪問屬性,但還有很多其他事情我希望您會遇到問題。

所以,總而言之,我的建議是如果可以的話更改數據庫模式。 second_phonephone2都可以工作。