2012-09-17 46 views
1

在嘗試通過導軌控制檯來定位模型現在Rails模型 「LoadError:預期」,並在名稱使用下劃線(_)

>> f = DBFile.find_by_id(1) 
>> NameError: uninitialized constant DBFile 
>> D_B_File.all() 
LoadError: Expected /home/thrive/rails_projects/tester/app/models/d_b_file.rb to define D_B_File 
>> f = DBFile.find_by_id(1) 
#<DBFile id: 1, file_name: "output-May-2010.csv"> 

,當我重新命名模型d_b_file.rb >> db_file.rb

>> f = DBFile.find_by_id(1) 
#<DBFile id: 1, file_name: "output-May-2010.csv"> 

那麼原始模型名稱中額外的下劃線是什麼......阻止它正常加載?

回答

1

問題是,文件名與類名直接相關,因爲Rails依賴它來確定它應該在哪裏尋找類。因此,"DBFile".underscore會給你db_file。所以這就是Rails期望找到這個類的地方。

+0

我沒有關注這個「DBFile」.underscore ... –

+0

因此,Rails所做的就是查看你的'class DBFile ... end'並獲取類名和「下劃線」它來找到它的文件名預計。在這種情況下,'db_file.rb'。別的,它會抱怨。 –

+0

AH .underscore是一種導軌方法! –

相關問題