2013-02-11 25 views
0

我意外地命名爲複數的車型之一,所以我都手動更改名稱:找不到表「projects_users」

projects_users.rb -> projects_user.rb 

......還有......

class ProjectsUsers < ActiveRecord::Base -> class ProjectsUser < ActiveRecord::Base 

。 ..和表名與遷移。

現在,我得到一個錯誤,告訴我:

Could not find table 'projects_users' 

這是奇怪的,因爲這是數據庫的老名字,我無法找到我的代碼中的任何地方,我指的是這個名字。

使用該表projects_user控制器是項目控制和錯誤是指下列(3號線):

1. def edit 
2.  @project = Project.find(params[:id]) 
3.  @members = ProjectsUser.where(:project_id => params[:id]) 
4. end 

什麼可能是錯誤的?我應該在哪裏看?

Schema.rb是從我所關於該表告訴正確的:

create_table "projects_user", :force => true do |t| 
    t.integer "project_id" 
    t.integer "user_id" 
end 

add_index "projects_user", ["project_id", "user_id"], :name => "index_projects_users_on_project_id_and_user_id" 
+0

您是否還更新了遷移並重新運行?因爲它擁有表格的實際名稱。 – raiis 2013-02-11 21:05:25

+0

我爲名稱更改創建了一個新的遷移文件並運行rake db:migrate,它更改了名稱(如果這就是您的意思?) – holyredbeard 2013-02-11 21:07:50

+0

我不知道命名爲複數時創建了哪個表,但更改後模型你還需要更新表格來更正複數。 – raiis 2013-02-11 21:09:57

回答

3

你的模型應該是單數形式,但你的數據庫表應該還是複數。您的模式表明數據庫表將是單數(projects_user)。

因此,ProjectsUser模型應該在您的數據庫中有相應的projects_users表。

+0

令人困惑,但現在我明白了。謝謝,它解決了我的問題:) – holyredbeard 2013-02-11 21:10:56

+1

在這個意義上來看它:你的模型的一個實例代表一個對象(一個用戶),你的表是這些對象(用戶)的集合。 – 2013-02-11 21:11:48