因為巴豆夭要改用RoR來開發,所以這幾天一直在寫RoR的程式。可是這幾天遇到一個問題,一直沒辦法解決。我在用Model.find的時候,一直出現「syntax error, unexpected tINTEGER」這種的錯誤,找了好多天一直找不到錯誤。一開始我還以為是JRuby的問題,後來換成native Ruby也還是一樣;沒關係,我把Mongrel改成Webrick,結果還是一樣。真是讓我發瘋了!

就在剛剛總算是讓我找到問題點了,這篇「rails的bug,害死人」的作者也是跟我一樣的問題,原來是DB其中的一個欄位名稱叫做「type」,而type這個字是RoR的保留字,而且這個保留字正好是用在DB上面,難怪一直出現問題。

現在我們把type這個欄位改成level了,目前就沒有出現什麼問題了。可是現在問題是從DB撈出來的資料都變成「?????」問號了,看來unicode的問題也要花我一點時間了 (昏倒)。

對了,如果真的不想改欄位名稱的話,也可以看看這篇「Rails error: syntax error, unexpected tINTEGER Object::1」,只要在ActiveRecord裡面把self.inheritance_column這個屬性改為''空字串就可以了。不過這樣子或許就會違背「Convention over Configuration」的原則了,所以為了以後的開發跟維護方便,我還是把欄位名稱改掉囉。

參考資料:
Irene,searching for her shining~~: rails的bug,害死人
ReservedWords in Ruby on Rails
MagicFieldNames in Ruby on Rails
Freezzo.com - Rails error: syntax error, unexpected tINTEGER Object::1

全站熱搜

kewang 發表在 痞客邦 留言(0) 人氣()