2011-09-20 69 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

相关问题