2011-09-20 33 views
2

我有一個用戶模式:類有相同的名字

class User < ActiveRecord::Base 

end 

這個模型是用來存儲所有的企業用戶

然後我想有我的工作場所的命名空間內的另一個用戶模型:

class Workplace::User < ActiveRecord::Base 

end 

這個類在自己的工作崗位可用於我的用戶的用戶

它不工作和以下錯誤消息時上升我想遷移:

Expected .../app/models/workplace/user.rb to define User 

我沒有使用不同的名稱,型號這個問題,但我想使用相同的名稱(更有意義,我.. )

我怎麼能?謝謝!!!

+1

個人而言,我認爲這是一個糟糕的主意,因爲您現在必須跟蹤您在代碼中處理的用戶類型。對我來說,這聽起來像你有應用程序用戶和工作場所用戶。爲什麼不只有AppUser和用戶?或者使用相同的模型,使用適當的關聯,並使差異消失? –

+0

我不能使用相同的模型,因爲我有多對多的關係。用戶是「公司目錄」,而Workplace :: User是在工作場所工作的用戶的個人目錄。另一種方法是讓該課程脫離該模型,並創建一個WorkplaceUser(或任何其他名稱)類,但是我嘗試這種方式,因爲路由似乎更清晰。我現在有workplace_users_path而不是有workplace_workplace_users_path。但我對軌道很陌生,我仍然在尋找自己的方式。我願意接受任何建議...... – ndemoreau

+0

爲什麼你不使用Single Table Inheritance?一切都會更清潔 – apneadiving

回答

2

當您在名稱空間中聲明類時,rails期望將MVC的文件放置在與名稱空間名稱相同的文件夾中。

嘗試將它們放置在

應用程序/模型/工作/ user.rb

應用程序/控制器/工作/ user_controller.rb

應用程序/視圖/工作/

+1

就是這樣。這是由腳手架發電機 – ndemoreau

+0

自動完成嗯奇怪,我試過這樣做,我沒有任何問題,你說它失敗了耙分貝:遷移?你在routes.rb中有正確的條目嗎?你可以添加你嘗試過的生成器命令嗎? – Saifis

+0

我所做的是將我的其他user.rb類放在另一個名稱空間文件夾(模型/管理而不是模型/),現在Workplace :: User的作品。奇怪的行爲。謝謝你,讓我朝着正確的方向前進。 – ndemoreau